// Path: c3po-api/src/main/java/com/petpet/c3po/api/model/Property.java
// public class Property implements Model {
// 
//   /**
//    * The id of the proeprty.
//    */
//   private String id;
// 
//   /**
//    * The key of the property.
//    */
//   private String key;
// 
//   /**
//    * The type of the property.
//    */
//   private String type;
// 
//   /**
//    * A default constructor.
//    */
//   public Property() {
// 
//   }
// 
//   /**
//    * Creates a property with the given key as key and id and sets the type to a
//    * string.
//    * 
//    * @param key
//    *          the key of the property.
//    */
//   public Property(String key) {
//     this.id = key;
//     this.key = key;
//     this.type = PropertyType.STRING.name();
//   }
// 
//   /**
//    * Creates a property with the given key as key and id and sets the type to
//    * the given type.
//    * 
//    * @param key
//    * @param type
//    */
//   public Property(String key, PropertyType type) {
//     this( key );
//     this.type = type.name();
//   }
// 
//   public void setId( String id ) {
//     this.id = id;
//   }
// 
//   public String getId() {
//     return this.id;
//   }
// 
//   public String getKey() {
//     return key;
//   }
// 
//   public void setKey( String key ) {
//     this.key = key;
//   }
// 
//   public String getType() {
//     return type;
//   }
// 
//   public void setType( String type ) {
//     this.type = type;
//   }
// 
//   @Override
//   public int hashCode() {
//     final int prime = 31;
//     int result = 1;
//     result = prime * result + ((id == null) ? 0 : id.hashCode());
//     result = prime * result + ((key == null) ? 0 : key.hashCode());
//     result = prime * result + ((type == null) ? 0 : type.hashCode());
//     return result;
//   }
// 
//   @Override
//   public boolean equals( Object obj ) {
//     if ( this == obj )
//       return true;
//     if ( obj == null )
//       return false;
//     if ( getClass() != obj.getClass() )
//       return false;
//     Property other = (Property) obj;
//     if ( id == null ) {
//       if ( other.id != null )
//         return false;
//     } else if ( !id.equals( other.id ) )
//       return false;
//     if ( key == null ) {
//       if ( other.key != null )
//         return false;
//     } else if ( !key.equals( other.key ) )
//       return false;
//     if ( type == null ) {
//       if ( other.type != null )
//         return false;
//     } else if ( !type.equals( other.type ) )
//       return false;
//     return true;
//   }
// 
// }


import java.util.ArrayList;
import java.util.List;
import com.petpet.c3po.api.model.Property;
/*******************************************************************************
 * Copyright 2013 Petar Petrov <me@petarpetrov.org>
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package com.petpet.c3po.api.model.helper;



/**
 * A single metadata record of an element.
 * 
 * @author Petar Petrov <me@petarpetrov.org>
 * 
 */
public class MetadataRecord {

  /**
   * The status of the element shows the certainty with which the value for the
   * given property is correct.
   * 
   * @author Petar Petrov <me@petarpetrov.org>
   * 
   */
  public static enum Status {
    /**
     * Means that more than one tools confirm the value.
     */
    OK,

    /**
     * Only one tool has given this value.
     */
    SINGLE_RESULT,

    /**
     * One, two or more tools have provided different values for the same
     * property.
     */
    CONFLICT
  }

  /**
   * The property to which the value of this record belongs.
   */
// Path: c3po-api/src/main/java/com/petpet/c3po/api/model/Property.java
// public class Property implements Model {
// 
//   /**
//    * The id of the proeprty.
//    */
//   private String id;
// 
//   /**
//    * The key of the property.
//    */
//   private String key;
// 
//   /**
//    * The type of the property.
//    */
//   private String type;
// 
//   /**
//    * A default constructor.
//    */
//   public Property() {
// 
//   }
// 
//   /**
//    * Creates a property with the given key as key and id and sets the type to a
//    * string.
//    * 
//    * @param key
//    *          the key of the property.
//    */
//   public Property(String key) {
//     this.id = key;
//     this.key = key;
//     this.type = PropertyType.STRING.name();
//   }
// 
//   /**
//    * Creates a property with the given key as key and id and sets the type to
//    * the given type.
//    * 
//    * @param key
//    * @param type
//    */
//   public Property(String key, PropertyType type) {
//     this( key );
//     this.type = type.name();
//   }
// 
//   public void setId( String id ) {
//     this.id = id;
//   }
// 
//   public String getId() {
//     return this.id;
//   }
// 
//   public String getKey() {
//     return key;
//   }
// 
//   public void setKey( String key ) {
//     this.key = key;
//   }
// 
//   public String getType() {
//     return type;
//   }
// 
//   public void setType( String type ) {
//     this.type = type;
//   }
// 
//   @Override
//   public int hashCode() {
//     final int prime = 31;
//     int result = 1;
//     result = prime * result + ((id == null) ? 0 : id.hashCode());
//     result = prime * result + ((key == null) ? 0 : key.hashCode());
//     result = prime * result + ((type == null) ? 0 : type.hashCode());
//     return result;
//   }
// 
//   @Override
//   public boolean equals( Object obj ) {
//     if ( this == obj )
//       return true;
//     if ( obj == null )
//       return false;
//     if ( getClass() != obj.getClass() )
//       return false;
//     Property other = (Property) obj;
//     if ( id == null ) {
//       if ( other.id != null )
//         return false;
//     } else if ( !id.equals( other.id ) )
//       return false;
//     if ( key == null ) {
//       if ( other.key != null )
//         return false;
//     } else if ( !key.equals( other.key ) )
//       return false;
//     if ( type == null ) {
//       if ( other.type != null )
//         return false;
//     } else if ( !type.equals( other.type ) )
//       return false;
//     return true;
//   }
// 
// }


// Path: c3po-api/src/main/java/com/petpet/c3po/api/model/helper/MetadataRecord.java
import java.util.ArrayList;
import java.util.List;
import com.petpet.c3po.api.model.Property;

/*******************************************************************************
 * Copyright 2013 Petar Petrov <me@petarpetrov.org>
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package com.petpet.c3po.api.model.helper;



/**
 * A single metadata record of an element.
 * 
 * @author Petar Petrov <me@petarpetrov.org>
 * 
 */
public class MetadataRecord {

  /**
   * The status of the element shows the certainty with which the value for the
   * given property is correct.
   * 
   * @author Petar Petrov <me@petarpetrov.org>
   * 
   */
  public static enum Status {
    /**
     * Means that more than one tools confirm the value.
     */
    OK,

    /**
     * Only one tool has given this value.
     */
    SINGLE_RESULT,

    /**
     * One, two or more tools have provided different values for the same
     * property.
     */
    CONFLICT
  }

  /**
   * The property to which the value of this record belongs.
   */
  private Property property;