// Path: src/main/java/net/moddity/droidnubekit/objects/DNKObject.java
// public abstract class DNKObject implements Serializable {
// 
//     private DNKRecord record;
// 
//     public DNKObject() {
//         record = new DNKRecord();
//         setDefaultUUID();
//     }
// 
//     public DNKRecord toRecord() {
//         DNKAnnotationParser annotationParser = new DNKAnnotationParser();
//         try {
//             annotationParser.parseToRecord(this, record);
//         } catch (DNKRecordConversionException e) {
//             e.printStackTrace();
//             return null;
//         }
//         return record;
//     }
// 
//     public List<DNKRecord> getDescendingRecords() {
//         List<DNKRecord> records = new ArrayList<>();
//         for(Field field : getClass().getDeclaredFields()) {
//             field.setAccessible(true);
//             if(field.isAnnotationPresent(CKReference.class)) {
//                 try {
// 
//                     List<DNKObject> references = (List<DNKObject>)field.get(this);
// 
//                     for(DNKObject object : references) {
//                         records.add(object.toRecord());
//                         List<DNKRecord> descendants = object.getDescendingRecords();
//                         if(descendants.size() > 0)
//                             records.addAll(descendants);
//                     }
//                 } catch (IllegalAccessException e) {
//                     e.printStackTrace();
//                 }
//             }
//         }
//         return records;
//     }
// 
//     private void setDefaultUUID() {
//         for(Field field : getClass().getDeclaredFields()) {
//             field.setAccessible(true);
//             if(field.isAnnotationPresent(RecordName.class)) {
//                 try {
//                     field.set(this, UUID.randomUUID().toString());
//                 } catch (IllegalAccessException e) {
//                     e.printStackTrace();
//                 }
//             }
//         }
//     }
// }
// 
// Path: src/main/java/net/moddity/droidnubekit/responsemodels/DNKRecord.java
// public class DNKRecord implements Serializable {
//     
//     private String recordName;
//     private String recordType;
//     private String recordChangeTag;
// 
//     @SerializedName("fields")
//     private Map<String, DNKRecordField> fields = new HashMap<>();
// 
//     private Boolean deleted;
// 
//     public String getRecordName() {
//         return recordName;
//     }
// 
//     public void setRecordName(String recordName) {
//         this.recordName = recordName;
//     }
// 
//     public String getRecordType() {
//         return recordType;
//     }
// 
//     public void setRecordType(String recordType) {
//         this.recordType = recordType;
//     }
// 
//     public String getRecordChangeTag() {
//         return recordChangeTag;
//     }
// 
//     public void setRecordChangeTag(String recordChangeTag) {
//         this.recordChangeTag = recordChangeTag;
//     }
// 
//     public Map<String, DNKRecordField> getFields() {
//         return fields;
//     }
// 
//     public void setFields(Map<String, DNKRecordField> fields) {
//         this.fields = fields;
//     }
// 
//     public Boolean getDeleted() {
//         return deleted;
//     }
// 
//     public void setDeleted(Boolean deleted) {
//         this.deleted = deleted;
//     }
// }
// 
// Path: src/main/java/net/moddity/droidnubekit/responsemodels/DNKZone.java
// public class DNKZone implements Serializable {
//     private String zoneName = "_defaultZone";
// 
//     public String getZoneName() {
//         return zoneName;
//     }
// 
//     public void setZoneName(String zoneName) {
//         this.zoneName = zoneName;
//     }
// }
// 
// Path: src/main/java/net/moddity/droidnubekit/utils/DNKOperationType.java
// public enum DNKOperationType {
//     CREATE("create"),
//     UPDATE("update"),
//     FORCE_UPDATE("forceUpdate"),
//     REPLACE("replace"),
//     FORCE_REPLACE("forceReplace"),
//     DELETE("delete"),
//     FORCE_DELETE("forceDelete");
// 
//     private final String text;
// 
//     /**
//      * @param text
//      */
//     private DNKOperationType(final String text) {
//         this.text = text;
//     }
// 
//     /* (non-Javadoc)
//      * @see java.lang.Enum#toString()
//      */
//     @Override
//     public String toString() {
//         return text;
//     }
// 
//     public static DNKOperationType fromString(String stringtype) {
//         for(DNKOperationType type : DNKOperationType.values()) {
//             if(type.toString().equals(stringtype))
//                 return type;
//         }
// 
//         return null;
//     }
// }


import net.moddity.droidnubekit.objects.DNKObject;
import net.moddity.droidnubekit.responsemodels.DNKRecord;
import net.moddity.droidnubekit.responsemodels.DNKZone;
import net.moddity.droidnubekit.utils.DNKOperationType;
import java.util.ArrayList;
import java.util.List;
package net.moddity.droidnubekit.requests;



/**
 * Created by jaume on 14/7/15.
 */
public class DNKRecordModifyRequest {
    private List<DNKRecordOperation> operations;
    private DNKZone zoneID;
    private Boolean atomic;
    private List<String> desiredKeys;

    public List<DNKRecordOperation> getOperations() {
        return operations;
    }

    public void setOperations(List<DNKRecordOperation> operations) {
        this.operations = operations;
    }

    public DNKZone getZoneID() {
        return zoneID;
    }

    public void setZoneID(DNKZone zoneID) {
        this.zoneID = zoneID;
    }

    public Boolean getAtomic() {
        return atomic;
    }

    public void setAtomic(Boolean atomic) {
        this.atomic = atomic;
    }

    public List<String> getDesiredKeys() {
// Path: src/main/java/net/moddity/droidnubekit/objects/DNKObject.java
// public abstract class DNKObject implements Serializable {
// 
//     private DNKRecord record;
// 
//     public DNKObject() {
//         record = new DNKRecord();
//         setDefaultUUID();
//     }
// 
//     public DNKRecord toRecord() {
//         DNKAnnotationParser annotationParser = new DNKAnnotationParser();
//         try {
//             annotationParser.parseToRecord(this, record);
//         } catch (DNKRecordConversionException e) {
//             e.printStackTrace();
//             return null;
//         }
//         return record;
//     }
// 
//     public List<DNKRecord> getDescendingRecords() {
//         List<DNKRecord> records = new ArrayList<>();
//         for(Field field : getClass().getDeclaredFields()) {
//             field.setAccessible(true);
//             if(field.isAnnotationPresent(CKReference.class)) {
//                 try {
// 
//                     List<DNKObject> references = (List<DNKObject>)field.get(this);
// 
//                     for(DNKObject object : references) {
//                         records.add(object.toRecord());
//                         List<DNKRecord> descendants = object.getDescendingRecords();
//                         if(descendants.size() > 0)
//                             records.addAll(descendants);
//                     }
//                 } catch (IllegalAccessException e) {
//                     e.printStackTrace();
//                 }
//             }
//         }
//         return records;
//     }
// 
//     private void setDefaultUUID() {
//         for(Field field : getClass().getDeclaredFields()) {
//             field.setAccessible(true);
//             if(field.isAnnotationPresent(RecordName.class)) {
//                 try {
//                     field.set(this, UUID.randomUUID().toString());
//                 } catch (IllegalAccessException e) {
//                     e.printStackTrace();
//                 }
//             }
//         }
//     }
// }
// 
// Path: src/main/java/net/moddity/droidnubekit/responsemodels/DNKRecord.java
// public class DNKRecord implements Serializable {
//     
//     private String recordName;
//     private String recordType;
//     private String recordChangeTag;
// 
//     @SerializedName("fields")
//     private Map<String, DNKRecordField> fields = new HashMap<>();
// 
//     private Boolean deleted;
// 
//     public String getRecordName() {
//         return recordName;
//     }
// 
//     public void setRecordName(String recordName) {
//         this.recordName = recordName;
//     }
// 
//     public String getRecordType() {
//         return recordType;
//     }
// 
//     public void setRecordType(String recordType) {
//         this.recordType = recordType;
//     }
// 
//     public String getRecordChangeTag() {
//         return recordChangeTag;
//     }
// 
//     public void setRecordChangeTag(String recordChangeTag) {
//         this.recordChangeTag = recordChangeTag;
//     }
// 
//     public Map<String, DNKRecordField> getFields() {
//         return fields;
//     }
// 
//     public void setFields(Map<String, DNKRecordField> fields) {
//         this.fields = fields;
//     }
// 
//     public Boolean getDeleted() {
//         return deleted;
//     }
// 
//     public void setDeleted(Boolean deleted) {
//         this.deleted = deleted;
//     }
// }
// 
// Path: src/main/java/net/moddity/droidnubekit/responsemodels/DNKZone.java
// public class DNKZone implements Serializable {
//     private String zoneName = "_defaultZone";
// 
//     public String getZoneName() {
//         return zoneName;
//     }
// 
//     public void setZoneName(String zoneName) {
//         this.zoneName = zoneName;
//     }
// }
// 
// Path: src/main/java/net/moddity/droidnubekit/utils/DNKOperationType.java
// public enum DNKOperationType {
//     CREATE("create"),
//     UPDATE("update"),
//     FORCE_UPDATE("forceUpdate"),
//     REPLACE("replace"),
//     FORCE_REPLACE("forceReplace"),
//     DELETE("delete"),
//     FORCE_DELETE("forceDelete");
// 
//     private final String text;
// 
//     /**
//      * @param text
//      */
//     private DNKOperationType(final String text) {
//         this.text = text;
//     }
// 
//     /* (non-Javadoc)
//      * @see java.lang.Enum#toString()
//      */
//     @Override
//     public String toString() {
//         return text;
//     }
// 
//     public static DNKOperationType fromString(String stringtype) {
//         for(DNKOperationType type : DNKOperationType.values()) {
//             if(type.toString().equals(stringtype))
//                 return type;
//         }
// 
//         return null;
//     }
// }


// Path: src/main/java/net/moddity/droidnubekit/requests/DNKRecordModifyRequest.java
import net.moddity.droidnubekit.objects.DNKObject;
import net.moddity.droidnubekit.responsemodels.DNKRecord;
import net.moddity.droidnubekit.responsemodels.DNKZone;
import net.moddity.droidnubekit.utils.DNKOperationType;
import java.util.ArrayList;
import java.util.List;

package net.moddity.droidnubekit.requests;



/**
 * Created by jaume on 14/7/15.
 */
public class DNKRecordModifyRequest {
    private List<DNKRecordOperation> operations;
    private DNKZone zoneID;
    private Boolean atomic;
    private List<String> desiredKeys;

    public List<DNKRecordOperation> getOperations() {
        return operations;
    }

    public void setOperations(List<DNKRecordOperation> operations) {
        this.operations = operations;
    }

    public DNKZone getZoneID() {
        return zoneID;
    }

    public void setZoneID(DNKZone zoneID) {
        this.zoneID = zoneID;
    }

    public Boolean getAtomic() {
        return atomic;
    }

    public void setAtomic(Boolean atomic) {
        this.atomic = atomic;
    }

    public List<String> getDesiredKeys() {
        return desiredKeys;