import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.util.ArrayList;
import java.util.Arrays;
@SuppressWarnings("unused")
public class Template extends IMContainer {
private ArrayList<Folder> subFolders = new ArrayList<>();
private Gson templateGson = new Gson();
private JsonParser parser = new JsonParser();
private JsonArray foldersJsonArray;
//<editor-fold desc="Class Variables"
private String authorDescription
; private String classDescription
;
// //Custom fields variables
private String defaultSecurity
; private String documentNumber
; private String editProfileDate
; private String effectiveSecurity
; private String fileCreateDate
; private String lastUserDescription
; private String operatorDescription
; private String ownerDescription
; private String typeDescription
;
private int retainDays;
private int version;
private long size;
private boolean declared;
private boolean declared2;
private boolean hasDocuments;
private boolean hasSubfolders;
private boolean inUse;
private boolean indexable;
private boolean checkedOut;
private boolean containerSavedSearch;
private boolean contentSavedSearch;
private boolean external;
private boolean externalAsNormal;
private boolean hidden;
private boolean hipaa;
private boolean inUse2;
private boolean restorable;
//</editor-fold>
//main constructor, parses response string to JSON and pulls all data to fill class variables.
public Template(JsonObject templateProfile){
//JsonObject templateProfile = parser.parse(templateProfileResponseString).getAsJsonObject();
if (templateProfile.has("author")){
this.author = templateProfile.get("author").getAsString();
}
if (templateProfile.has("class")){
this.iMClass = templateProfile.get("class").getAsString();
}
if (templateProfile.has("class_description")){
this.classDescription = templateProfile.get("class_description").getAsString();
}
if (templateProfile.has("content_type")){
this.contentType = templateProfile.get("content_type").getAsString();
}
if (templateProfile.has("create_date")){
this.createDate = templateProfile.get("create_date").getAsString();
}
if (templateProfile.has("database")){
this.database = templateProfile.get("database").getAsString();
}
if (templateProfile.has("declared")){
this.declared = templateProfile.get("declared").getAsBoolean();
}
if (templateProfile.has("default_security")){
this.defaultSecurity = templateProfile.get("default_security").getAsString();
}
if (templateProfile.has("document_number")){
this.documentNumber = templateProfile.get("document_number").getAsString();
}
if (templateProfile.has("edit_date")){
this.editDate = templateProfile.get("edit_date").getAsString();
}
if (templateProfile.has("edit_profile_date")){
this.editProfileDate = templateProfile.get("edit_profile_date").getAsString();
}
if (templateProfile.has("effective_security")){
this.effectiveSecurity = templateProfile.get("effective_security").getAsString();
}
if (templateProfile.has("extension")){
this.extension = templateProfile.get("extension").getAsString();
}
if (templateProfile.has("file_create_date")){
this.fileCreateDate = templateProfile.get("file_create_date").getAsString();
}
if (templateProfile.has("file_edit_date")){
this.fileEditDate = templateProfile.get("file_edit_date").getAsString();
}
if (templateProfile.has("has_subfolders")){
this.hasSubfolders = templateProfile.get("has_subfolders").getAsBoolean();
}
if (templateProfile.has("id")){
this.id = templateProfile.get("id").getAsString();
}
if (templateProfile.has("in_use")){
this.inUse = templateProfile.get("in_use").getAsBoolean();
}
if (templateProfile.has("indexable")){
this.indexable = templateProfile.get("indexable").getAsBoolean();
}
if (templateProfile.has("is_checked_out")){
this.checkedOut = templateProfile.get("is_checked_out").getAsBoolean();
}
if (templateProfile.has("is_container_saved_search")){
this.containerSavedSearch = templateProfile.get("is_container_saved_search").getAsBoolean();
}
if (templateProfile.has("is_content_saved_search")){
this.contentSavedSearch = templateProfile.get("is_content_saved_search").getAsBoolean();
}
if (templateProfile.has("is_declared")){
this.declared2 = templateProfile.get("is_declared").getAsBoolean();
}
if (templateProfile.has("is_external")){
this.external = templateProfile.get("is_external").getAsBoolean();
}
if (templateProfile.has("is_external_as_normal")){
this.externalAsNormal = templateProfile.get("is_external_as_normal").getAsBoolean();
}
if (templateProfile.has("is_hidden")){
this.hidden = templateProfile.get("is_hidden").getAsBoolean();
}
if (templateProfile.has("is_hipaa")){
this.hipaa = templateProfile.get("is_hipaa").getAsBoolean();
}
if (templateProfile.has("is_in_use")){
this.inUse2 = templateProfile.get("is_in_use").getAsBoolean();
}
if (templateProfile.has("is_restorable")){
this.restorable = templateProfile.get("is_restorable").getAsBoolean();
}
if (templateProfile.has("iwl")){
this.iwl = templateProfile.get("iwl").getAsString();
}
if (templateProfile.has("last_user")){
this.lastUser = templateProfile.get("last_user").getAsString();
}
if (templateProfile.has("name")){
this.name = templateProfile.get("name").getAsString();
}
if (templateProfile.has("operator")){
this.operator = templateProfile.get("operator").getAsString();
}
if (templateProfile.has("owner")){
this.owner = templateProfile.get("owner").getAsString();
}
if (templateProfile.has("retain_days")){
this.retainDays = templateProfile.get("retain_days").getAsInt();
}
if (templateProfile.has("size")){
this.size = templateProfile.get("size").getAsLong();
}
if (templateProfile.has("subtype")){
this.subtype = templateProfile.get("subtype").getAsString();
}
if (templateProfile.has("type")){
this.type = templateProfile.get("type").getAsString();
}
if (templateProfile.has("type_description")){
this.typeDescription = templateProfile.get("type_description").getAsString();
}
if (templateProfile.has("version")){
this.version = templateProfile.get("version").getAsInt();
}
if (templateProfile.has("workspace_id")){
this.workspaceID = templateProfile.get("workspace_id").getAsString();
}
if (templateProfile.has("wstype")){
this.wsType = templateProfile.get("wstype").getAsString();
}
for (int x = 0; x <= 30; x++) {
// add one to x var at member name to account for array starting at 0
if (templateProfile.has("custom" + (x+1))) {
this.customField[x] = templateProfile.get("custom" + (x+1)).getAsString();
}
if (templateProfile.has("custom" + (x+1) + "_description")) {
this.customDescription[x] = templateProfile.get("custom" + (x+1) + "_description").getAsString();
}
}
}
public void saveFolders() {
for (int x = 0; x < this.foldersJsonArray.size(); x++) {
this.subFolders.add(new Folder(this.foldersJsonArray.get(x).getAsJsonObject()));
}
for(int x = 0; x < subFolders.size(); x++){
if(subFolders.get(x).hasSubfolders()){
subFolders.get(x).saveFolders();
}
}
}
public Folder addSubfolder(JsonObject folderProfile){
Folder subfolderToAdd = new Folder(folderProfile);
this.subFolders.add(subfolderToAdd);
return subfolderToAdd;
}
@Override
return "Template{" +
"subFolders=" + subFolders + "\n" +
", templateGson=" + templateGson + "\n" +
", parser=" + parser + "\n" +
", author='" + author + '\'' + "\n" +
", authorDescription='" + authorDescription + '\'' + "\n" +
", iMClass='" + iMClass + '\'' + "\n" +
", classDescription='" + classDescription + '\'' + "\n" +
", contentType='" + contentType + '\'' + "\n" +
", createDate='" + createDate + '\'' + "\n" +
", customField=" + Arrays.
toString(customField
) + "\n" + ", customDescription=" + Arrays.
toString(customDescription
) + "\n" + ", database='" + database + '\'' + "\n" +
", defaultSecurity='" + defaultSecurity + '\'' + "\n" +
", documentNumber='" + documentNumber + '\'' + "\n" +
", editDate='" + editDate + '\'' + "\n" +
", editProfileDate='" + editProfileDate + '\'' + "\n" +
", effectiveSecurity='" + effectiveSecurity + '\'' + "\n" +
", fileCreateDate='" + fileCreateDate + '\'' + "\n" +
", fileEditDate='" + fileEditDate + '\'' + "\n" +
", extension='" + extension + '\'' + "\n" +
", iwl='" + iwl + '\'' + "\n" +
", lastUser='" + lastUser + '\'' + "\n" +
", lastUserDescription='" + lastUserDescription + '\'' + "\n" +
", location='" + location + '\'' + "\n" +
", name='" + name + '\'' + "\n" +
", operator='" + operator + '\'' + "\n" +
", operatorDescription='" + operatorDescription + '\'' + "\n" +
", owner='" + owner + '\'' + "\n" +
", ownerDescription='" + ownerDescription + '\'' + "\n" +
", subtype='" + subtype + '\'' + "\n" +
", type='" + type + '\'' + "\n" +
", typeDescription='" + typeDescription + '\'' + "\n" +
", workspaceID='" + workspaceID + '\'' + "\n" +
", wsType='" + wsType + '\'' + "\n" +
", id='" + id + '\'' + "\n" +
", retainDays=" + retainDays + "\n" +
", version=" + version + "\n" +
", size=" + size + "\n" +
", declared=" + declared + "\n" +
", declared2=" + declared2 + "\n" +
", hasDocuments=" + hasDocuments + "\n" +
", hasSubfolders=" + hasSubfolders + "\n" +
", inUse=" + inUse + "\n" +
", indexable=" + indexable + "\n" +
", checkedOut=" + checkedOut + "\n" +
", containerSavedSearch=" + containerSavedSearch + "\n" +
", contentSavedSearch=" + contentSavedSearch + "\n" +
", external=" + external + "\n" +
", externalAsNormal=" + externalAsNormal + "\n" +
", hidden=" + hidden + "\n" +
", hipaa=" + hipaa + "\n" +
", inUse2=" + inUse2 + "\n" +
", restorable=" + restorable + "\n" +
'}';
}
// <editor-fold> desc="Getters"
public JsonArray getFoldersJsonArray() {
return foldersJsonArray;
}
public ArrayList<Folder> getSubFolders() {
return subFolders;
}
return author;
}
public String getAuthorDescription
() { return authorDescription;
}
return iMClass;
}
public String getClassDescription
() { return classDescription;
}
public String getContentType
() { return contentType;
}
public String getCreateDate
() { return createDate;
}
public String getCustomField
(int x
){ return customField[x];
}
public String getCustomFieldDescription
(int x
){ return customDescription[x];
}
return database;
}
public String getDefaultSecurity
() { return defaultSecurity;
}
public String getDocumentNumber
() { return documentNumber;
}
return editDate;
}
public String getEditProfileDate
() { return editProfileDate;
}
public String getFileCreateDate
() { return fileCreateDate;
}
public String getFileEditDate
() { return fileEditDate;
}
return iwl;
}
return lastUser;
}
public String getLastUserDescription
() { return lastUserDescription;
}
return location;
}
return name;
}
return operator;
}
public String getOperatorDescription
() { return operatorDescription;
}
return owner;
}
public String getOwnerDescription
() { return ownerDescription;
}
return subtype;
}
return type;
}
public String getTypeDescription
() { return typeDescription;
}
public String getWorkspaceID
() { return workspaceID;
}
return wsType;
}
return id;
}
public int getRetainDays() {
return retainDays;
}
public int getVersion() {
return version;
}
public long getSize() {
return size;
}
public boolean isDeclared() {
return declared;
}
public boolean isExternal() {
return external;
}
public boolean isExternalAsNormal() {
return externalAsNormal;
}
public boolean isHidden() {
return hidden;
}
public boolean isHipaa() {
return hipaa;
}
public boolean isInUse2() {
return inUse2;
}
public boolean hasDocuments() {
return hasDocuments;
}
public boolean hasSubfolders() {
return hasSubfolders;
}
public boolean isInUse() {
return inUse;
}
public boolean isIndexable() {
return indexable;
}
public boolean isCheckedOut() {
return checkedOut;
}
public boolean isContainerSavedSearch() {
return containerSavedSearch;
}
public boolean isContentSavedSearch() {
return contentSavedSearch;
}
public String getEffectiveSecurity
() { return effectiveSecurity;
}
public String getExtension
() { return extension;
}
public boolean isDeclared2() {
return declared2;
}
public boolean isRestorable() {
return restorable;
}
//</editor-fold>
// <editor-fold> desc="Setters"
public void setFoldersJsonArray(JsonArray foldersJsonArray) {
this.foldersJsonArray = foldersJsonArray;
}
public void setAuthor
(String author
) { this.author = author;
}
public void setAuthorDescription
(String authorDescription
) { this.authorDescription = authorDescription;
}
public void setiMClass
(String iMClass
) { this.iMClass = iMClass;
}
public void setClassDescription
(String classDescription
) { this.classDescription = classDescription;
}
public void setContentType
(String contentType
) { this.contentType = contentType;
}
public void setCreateDate
(String createDate
) { this.createDate = createDate;
}
public void setCustomField
(int x,
String customFieldValue
){ customField[x] = customFieldValue;
}
public void setCustomFieldDescription
(int x,
String customFieldDescription
){ customDescription[x] = customFieldDescription;
}
public void setDatabase
(String database
) { this.database = database;
}
public void setDefaultSecurity
(String defaultSecurity
) { this.defaultSecurity = defaultSecurity;
}
public void setDocumentNumber
(String documentNumber
) { this.documentNumber = documentNumber;
}
public void setEditDate
(String editDate
) { this.editDate = editDate;
}
public void setEditProfileDate
(String editProfileDate
) { this.editProfileDate = editProfileDate;
}
public void setFileCreateDate
(String fileCreateDate
) { this.fileCreateDate = fileCreateDate;
}
public void setFileEditDate
(String fileEditDate
) { this.fileEditDate = fileEditDate;
}
public void setIwl
(String iwl
) { this.iwl = iwl;
}
public void setLastUser
(String lastUser
) { this.lastUser = lastUser;
}
public void setLastUserDescription
(String lastUserDescription
) { this.lastUserDescription = lastUserDescription;
}
public void setLocation
(String location
) { this.location = location;
}
public void setName
(String name
) { this.name = name;
}
public void setOperator
(String operator
) { this.operator = operator;
}
public void setOperatorDescription
(String operatorDescription
) { this.operatorDescription = operatorDescription;
}
public void setOwner
(String owner
) { this.owner = owner;
}
public void setOwnerDescription
(String ownerDescription
) { this.ownerDescription = ownerDescription;
}
public void setSubtype
(String subtype
) { this.subtype = subtype;
}
public void setType
(String type
) { this.type = type;
}
public void setTypeDescription
(String typeDescription
) { this.typeDescription = typeDescription;
}
public void setWorkspaceID
(String workspaceID
) { this.workspaceID = workspaceID;
}
public void setWsType
(String wsType
) { this.wsType = wsType;
}
public void setId
(String id
) { this.id = id;
}
public void setRetainDays(int retainDays) {
this.retainDays = retainDays;
}
public void setVersion(int version) {
this.version = version;
}
public void setSize(long size) {
this.size = size;
}
public void setDeclared(boolean declared) {
this.declared = declared;
}
public void setExternal(boolean external) {
this.external = external;
}
public void setExternalAsNormal(boolean externalAsNormal) {
this.externalAsNormal = externalAsNormal;
}
public void setHidden(boolean hidden) {
this.hidden = hidden;
}
public void setHipaa(boolean hipaa) {
this.hipaa = hipaa;
}
public void setInUse2(boolean inUse2) {
this.inUse2 = inUse2;
}
public void setHasDocuments(boolean hasDocuments) {
this.hasDocuments = hasDocuments;
}
public void setHasSubfolders(boolean hasSubfolders) {
this.hasSubfolders = hasSubfolders;
}
public void setInUse(boolean inUse) {
this.inUse = inUse;
}
public void setIndexable(boolean indexable) {
this.indexable = indexable;
}
public void setCheckedOut(boolean checkedOut) {
this.checkedOut = checkedOut;
}
public void setContainerSavedSearch(boolean containerSavedSearch) {
this.containerSavedSearch = containerSavedSearch;
}
public void setContentSavedSearch(boolean contentSavedSearch) {
this.contentSavedSearch = contentSavedSearch;
}
public void setEffectiveSecurity
(String effectiveSecurity
) { this.effectiveSecurity = effectiveSecurity;
}
public void setExtension
(String extension
) { this.extension = extension;
}
public void setDeclared2(boolean declared2) {
this.declared2 = declared2;
}
public void setRestorable(boolean restorable) {
this.restorable = restorable;
}
//</editor-fold>
}