/* Copyright (C) 2005-2012, by the President and Fellows of Harvard College. 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. Dataverse Network - A web application to share, preserve and analyze research data. Developed at the Institute for Quantitative Social Science, Harvard University. Version 3.0. */ /* * StudyVersionDifferencesPage.java * * Created on February 18, 2010, 3:02 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package edu.harvard.iq.dvn.core.web.study; import edu.harvard.iq.dvn.core.study.StudyServiceLocal; import edu.harvard.iq.dvn.core.study.StudyVersion; import edu.harvard.iq.dvn.core.study.FileMetadata; import edu.harvard.iq.dvn.core.study.StudyField; import edu.harvard.iq.dvn.core.util.FileUtil; import java.io.File; import edu.harvard.iq.dvn.core.web.common.VDCBaseBean; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.ejb.EJB; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import javax.inject.Inject; import javax.inject.Named; import javax.servlet.http.HttpServletRequest; /** * * @author Leonid Andreev */ @Named @ViewScoped public class StudyVersionDifferencesPage extends VDCBaseBean implements java.io.Serializable { @EJB private StudyServiceLocal studyService; public StudyVersionDifferencesPage() { } // params private String actionMode; private Long studyId; private String versionNumberList; @Inject VersionNotesPopupBean versionNotesPopup; public VersionNotesPopupBean getVersionNotesPopup() { return versionNotesPopup; } public void setVersionNotesPopup(VersionNotesPopupBean versionNotesPopup) { this.versionNotesPopup = versionNotesPopup; } public String getActionMode() { return actionMode; } public void setActionMode(String am) { this.actionMode = am; } public Long getStudyId() { return studyId; } public void setStudyId(Long studyId) { this.studyId = studyId; } public String getVersionNumberList() { return versionNumberList; } public void setVersionNumberList(String vnl) { this.versionNumberList = vnl; } // internals private Long versionNumber1 = null; private Long versionNumber2 = null; private StudyVersion studyVersion1 = null; private StudyVersion studyVersion2 = null; private StudyUI studyUI1; private StudyUI studyUI2; private StudyUI studyUI; private List<catalogInfoDifferenceItem> citationDiffList; private List<catalogInfoDifferenceItem> abstractandscopeDiffList; private List<catalogInfoDifferenceItem> datacollectionDiffList; private List<catalogInfoDifferenceItem> dataavailDiffList; private List<catalogInfoDifferenceItem> termsofuseDiffList; private List<catalogInfoDifferenceItem> notesDiffList; private List<studyFileDifferenceItem> studyFilesDiffList; private String noCatalogDifferencesFoundLabel = ""; private String noFileDifferencesFoundLabel = ""; public List<catalogInfoDifferenceItem> getCitationDiffList () { return citationDiffList; } public void setCitationDiffList (List<catalogInfoDifferenceItem> cidl) { this.citationDiffList = cidl; } public List<catalogInfoDifferenceItem> getAbstractandscopeDiffList () { return abstractandscopeDiffList; } public void setAbstractandscopeDiffList (List<catalogInfoDifferenceItem> cidl) { this.abstractandscopeDiffList = cidl; } public List<catalogInfoDifferenceItem> getDatacollectionDiffList () { return datacollectionDiffList; } public void setDatacollectionDiffList (List<catalogInfoDifferenceItem> cidl) { this.datacollectionDiffList = cidl; } public List<catalogInfoDifferenceItem> getDataavailDiffList () { return dataavailDiffList; } public void setDataavailDiffList (List<catalogInfoDifferenceItem> cidl) { this.dataavailDiffList = cidl; } public List<catalogInfoDifferenceItem> getTermsofuseDiffList () { return termsofuseDiffList; } public void setTermsofuseDiffList (List<catalogInfoDifferenceItem> cidl) { this.termsofuseDiffList = cidl; } public List<catalogInfoDifferenceItem> getNotesDiffList () { return notesDiffList; } public void setNotesDiffList (List<catalogInfoDifferenceItem> cidl) { this.notesDiffList = cidl; } public List<studyFileDifferenceItem> getStudyFilesDiffList () { return studyFilesDiffList; } public void setStudyFilesDiffList(List<studyFileDifferenceItem> sfdl) { this.studyFilesDiffList = sfdl; } public Long getVersionNumber1() { return versionNumber1; } public void setVersionNumber1(Long versionNumber) { this.versionNumber1 = versionNumber; } public Long getVersionNumber2() { return versionNumber2; } public void setVersionNumber2(Long versionNumber) { this.versionNumber2 = versionNumber; } public StudyVersion getStudyVersion1() { return studyVersion1; } public void setStudyVersion1(StudyVersion sv) { this.studyVersion1 = sv; } public StudyVersion getStudyVersion2() { return studyVersion2; } public void setStudyVersion2(StudyVersion sv) { this.studyVersion2 = sv; } public StudyUI getStudyUI() { return studyUI; } public void setStudyUI(StudyUI studyUI) { this.studyUI = studyUI; } public StudyUI getStudyUI1() { return studyUI1; } public void setStudyUI1(StudyUI studyUI) { this.studyUI1 = studyUI; } public StudyUI getStudyUI2() { return studyUI2; } public void setStudyUI2(StudyUI studyUI) { this.studyUI2 = studyUI; } public String getNoCatalogDifferencesFoundLabel () { return noCatalogDifferencesFoundLabel; } public void setNoCatalogDifferencesFoundLabel (String label) { noCatalogDifferencesFoundLabel = label; } public String getNoFileDifferencesFoundLabel () { return noFileDifferencesFoundLabel; } public void setNoFileDifferencesFoundLabel (String label) { noFileDifferencesFoundLabel = label; } public void init() { super.init(); HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); if (studyId == null) { studyId = getVDCRequestBean().getStudyId(); } if (actionMode == null) { actionMode = getVDCRequestBean().getActionMode(); } Long[] versionNumberValues =getVDCRequestBean().parseVersionNumberList(request); if (studyId!=null && versionNumberValues!=null ) { if ( versionNumberValues[0] != null && versionNumberValues[1] != null ) { // we want to show first the older version, // then the newer: if (versionNumberValues[0].compareTo(versionNumberValues[1]) < 0) { versionNumber1 = versionNumberValues[0]; versionNumber2 = versionNumberValues[1]; } else { versionNumber1 = versionNumberValues[1]; versionNumber2 = versionNumberValues[0]; } studyVersion1 = studyService.getStudyVersion(studyId, versionNumber1); studyVersion2 = studyService.getStudyVersion(studyId, versionNumber2); } if (studyVersion1 == null || studyVersion2 == null) { redirect("/faces/IdDoesNotExistPage.xhtml?type=Study%20Version"); return; } studyUI1 = new StudyUI(studyVersion1, getVDCSessionBean().getUser(), true); studyUI2 = new StudyUI(studyVersion2, getVDCSessionBean().getUser(), true); studyUI = new StudyUI(studyUI1.getStudy()); // This studyUI is used in the Study Title section of the page initCatalogInfoDifferencesList(); initStudyFilesDifferencesList(); } else { // We must have a StudyId and the Version numbers; throw an error //System.out.println("ERROR: in StudyVersionDifferencePage, without a studyId and/or version Ids"); } } public boolean isReleaseConfrimInProgress () { return ("confirmRelease".equals(actionMode)); } public boolean isCatalogingInformationDifferent () { return citationDiffList.size() > 0 || abstractandscopeDiffList.size() > 0 || datacollectionDiffList.size() > 0 || dataavailDiffList.size() > 0 || termsofuseDiffList.size() > 0 || notesDiffList.size() > 0; } public boolean isStudyFilesDifferent () { //return false; return studyFilesDiffList.size() > 0; } public void openPopup(ActionEvent ae) { versionNotesPopup.setActionType(VersionNotesPopupBean.ActionType.VERSION_RELEASE); versionNotesPopup.setVersionNote(studyUI2.getStudyVersion().getVersionNote()); versionNotesPopup.openPopup(ae); } //public void saveVersionNoteAndRelease (ActionEvent ae) { public String saveVersionNoteAndRelease () { // First we save the Version Note: studyUI2.getStudyVersion().setVersionNote(versionNotesPopup.getVersionNote()); // Release the latest version, save the new version note, // and archive the previously released version: studyService.setReleased(studyUI2.getStudy().getId(), studyUI2.getStudyVersion().getVersionNote()); // the setReleased method in the StudyServiceBean, above, // also updates the study with the Indexer service. // every time a study is released. versionNotesPopup.setShowPopup(false); // Success message getVDCRenderBean().getFlash().put("successMessage","Your study, " + studyUI2.getStudy().getGlobalId() + ", has been released!"); // And now we are redirecting back to the StudyPage; // no need to specify the version really, since the latest version is now released. return "/study/StudyPage?faces-redirect=true&studyId=" + getStudyId() + getContextSuffix(); } public String cancel() { // Do nothing and redirect back to the StudyPage; // Need to set the HTTP parameters: return "/study/StudyPage?faces-redirect=true&studyId=" + getStudyId() + getContextSuffix(); } private void initCatalogInfoDifferencesList () { initCitationDifferencesList(); initAbstractandscopeDifferencesList(); initDatacollectionDifferencesList(); initDataavailDifferencesList(); initTermsofuseDifferencesList(); initNotesDifferencesList(); if ( !isCatalogingInformationDifferent() ) { noCatalogDifferencesFoundLabel = "There are no differences in the Cataloging Information between the 2 versions"; } } private void initStudyFilesDifferencesList () { studyFilesDiffList = new ArrayList<studyFileDifferenceItem>(); // Study Files themselves are version-less; // In other words, 2 different versions can have different sets of // study files, but the files themselves don't have versions. // So in order to find the differences between the 2 sets of study // files in 2 versions we can just go through the lists of the // files and compare the ids. If both versions have the file with // the same file id, it is the same file. // UPDATE: in addition to the above, even when the 2 versions share the // same study file, the file metadatas ARE version-specific, so some of // the fields there (filename, etc.) may be different. If this is the // case, we want to display these differences as well. if (studyUI1.getFileMetadataList().size() == 0 && studyUI2.getFileMetadataList().size() == 0) { noFileDifferencesFoundLabel = "No data files in either version of the study"; return; } int i = 0; int j = 0; FileMetadata fm1; FileMetadata fm2; while ( i < studyUI1.getFileMetadataList().size() && j < studyUI2.getFileMetadataList().size() ) { fm1 = studyUI1.getFileMetadataList().get(i); fm2 = studyUI2.getFileMetadataList().get(j); if (fm1.getStudyFile().getId().compareTo(fm2.getStudyFile().getId()) == 0) { // The 2 versions share the same study file; // Check if the metadata information is identical in the 2 versions // of the metadata: if ( fileMetadataIsDifferent (fm1, fm2)) { studyFileDifferenceItem fdi = selectFileMetadataDiffs (fm1, fm2); fdi.setFileId(fm1.getStudyFile().getId().toString()); studyFilesDiffList.add(fdi); } i++; j++; } else if (fm1.getStudyFile().getId().compareTo(fm2.getStudyFile().getId()) > 0) { studyFileDifferenceItem fdi = selectFileMetadataDiffs (null, fm2); fdi.setFileId(fm2.getStudyFile().getId().toString()); studyFilesDiffList.add(fdi); j++; } else if (fm1.getStudyFile().getId().compareTo(fm2.getStudyFile().getId()) < 0) { studyFileDifferenceItem fdi = selectFileMetadataDiffs (fm1, null); fdi.setFileId(fm1.getStudyFile().getId().toString()); studyFilesDiffList.add(fdi); i++; } } // We've reached the end of at least one file list. // Whatever files are left on either of the 2 lists are automatically "different" // between the 2 versions. while ( i < studyUI1.getFileMetadataList().size() ) { fm1 = studyUI1.getFileMetadataList().get(i); studyFileDifferenceItem fdi = selectFileMetadataDiffs (fm1, null); fdi.setFileId(fm1.getStudyFile().getId().toString()); studyFilesDiffList.add(fdi); i++; } while ( j < studyUI2.getFileMetadataList().size() ) { fm2 = studyUI2.getFileMetadataList().get(j); studyFileDifferenceItem fdi = selectFileMetadataDiffs (null, fm2); fdi.setFileId(fm2.getStudyFile().getId().toString()); studyFilesDiffList.add(fdi); j++; } if (studyFilesDiffList.size() == 0) { noFileDifferencesFoundLabel = "These study versions have identical sets of data files"; } } private boolean fileMetadataIsDifferent (FileMetadata fm1, FileMetadata fm2) { if (fm1 == null && fm2 == null) { return false; } if (fm1 == null && fm2 != null) { return true; } if (fm2 == null && fm1 != null) { return true; } // Both are non-null metadata objects. // We simply go through the 5 metadata fields, if any one of them // is different between the 2 versions, we declare the objects // different. String value1; String value2; // filename: value1 = fm1.getLabel(); value2 = fm2.getLabel(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { return true; } // file type: value1 = fm1.getStudyFile().getFileType(); value2 = fm2.getStudyFile().getFileType(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { return true; } // file size: value1 = FileUtil.byteCountToDisplaySize(new File(fm1.getStudyFile().getFileSystemLocation()).length()); value2 = FileUtil.byteCountToDisplaySize(new File(fm2.getStudyFile().getFileSystemLocation()).length()); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { return true; } // file category: value1 = fm1.getCategory(); value2 = fm2.getCategory(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { return true; } // file description: value1 = fm1.getDescription(); value2 = fm2.getDescription(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { return true; } // if we got this far, the 2 metadatas are identical: return false; } private studyFileDifferenceItem selectFileMetadataDiffs (FileMetadata fm1, FileMetadata fm2) { studyFileDifferenceItem fdi = new studyFileDifferenceItem(); if (fm1 == null && fm2 == null) { // this should never happen; but if it does, // we return an empty diff object. return fdi; } if (fm2 == null) { fdi.setFileName1(fm1.getLabel()); fdi.setFileType1(fm1.getStudyFile().getFileType()); fdi.setFileSize1(FileUtil.byteCountToDisplaySize(new File(fm1.getStudyFile().getFileSystemLocation()).length())); fdi.setFileCat1(fm1.getCategory()); fdi.setFileDesc1(fm1.getDescription()); fdi.setFile2Empty(true); } else if (fm1 == null) { fdi.setFile1Empty(true); fdi.setFileName2(fm2.getLabel()); fdi.setFileType2(fm2.getStudyFile().getFileType()); fdi.setFileSize2(FileUtil.byteCountToDisplaySize(new File(fm2.getStudyFile().getFileSystemLocation()).length())); fdi.setFileCat2(fm2.getCategory()); fdi.setFileDesc2(fm2.getDescription()); } else { // Both are non-null metadata objects. // We simply go through the 5 metadata fields, if any are // different between the 2 versions, we add them to the // difference object: String value1; String value2; // filename: value1 = fm1.getLabel(); value2 = fm2.getLabel(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { fdi.setFileName1(value1); fdi.setFileName2(value2); } // NOTE: // fileType and fileSize will always be the same // for the same studyFile! -- so no need to check for differences in // these 2 items. // file category: value1 = fm1.getCategory(); value2 = fm2.getCategory(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { fdi.setFileCat1(value1); fdi.setFileCat2(value2); } // file description: value1 = fm1.getDescription(); value2 = fm2.getDescription(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { fdi.setFileDesc1(value1); fdi.setFileDesc2(value2); } } return fdi; } private void initCitationDifferencesList () { // Can't think of a better way of doing this than just going // through and comparing all the cataloging information entries. // // I also decided to use the same exact items for these comparisons // that we generate for the study view page, in the same order. // // The code below is largely automatically generated from the // cataloging information items on the study view page. String value1; String value2; citationDiffList = new ArrayList<catalogInfoDifferenceItem>(); catalogInfoDifferenceItem idi; // insert auto-generated code here: value1 = getStudyUI1().getMetadata().getTitle(); value2 = getStudyUI2().getMetadata().getTitle(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Title"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getSubTitle(); value2 = getStudyUI2().getMetadata().getSubTitle(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Subtitle"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getStudy().getGlobalId(); value2 = getStudyUI2().getStudy().getGlobalId(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Global ID"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getUNF(); value2 = getStudyUI2().getMetadata().getUNF(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("UNF"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getOtherIds(); value2 = getStudyUI2().getOtherIds(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Other ID"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getAuthorAffiliations(); value2 = getStudyUI2().getAuthorAffiliations(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Author"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getProducers(); value2 = getStudyUI2().getProducers(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Producer"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getProductionDate(); value2 = getStudyUI2().getProductionDate(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Production Date"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getProductionPlace(); value2 = getStudyUI2().getMetadata().getProductionPlace(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Production Place"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getSoftware(); value2 = getStudyUI2().getSoftware(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Software"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getFundingAgency(); value2 = getStudyUI2().getMetadata().getFundingAgency(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Funding Agency"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getGrants(); value2 = getStudyUI2().getGrants(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Grant Number"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getDistributors(); value2 = getStudyUI2().getDistributors(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Distributor"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getDistributorContact(); value2 = getStudyUI2().getDistributorContact(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Distributor Contact"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getDistributionDate(); value2 = getStudyUI2().getDistributionDate(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Distribution Date"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getDepositor(); value2 = getStudyUI2().getMetadata().getDepositor(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Depositor"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getDateOfDeposit(); value2 = getStudyUI2().getDateOfDeposit(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Deposit Date"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getSeries(); value2 = getStudyUI2().getSeries(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Series"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getStudyVersionText(); value2 = getStudyUI2().getStudyVersionText(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Version"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } // publications (forst the replication for, if any) value1 = getStudyUI1().getReplicationFor(); value2 = getStudyUI2().getReplicationFor(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Replication For"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } value1 = getStudyUI1().getRelPublications(); value2 = getStudyUI2().getRelPublications(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Related Publications"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); citationDiffList.add(idi); } } private void initAbstractandscopeDifferencesList () { String value1; String value2; abstractandscopeDiffList = new ArrayList<catalogInfoDifferenceItem>(); catalogInfoDifferenceItem idi; // insert auto-generated code here: value1 = getStudyUI1().getAbstracts(); value2 = getStudyUI2().getAbstracts(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Description"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getAbstractDates(); value2 = getStudyUI2().getAbstractDates(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Description Date"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getKeywords(); value2 = getStudyUI2().getKeywords(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Keyword"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getTopicClasses(); value2 = getStudyUI2().getTopicClasses(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Topic Classification"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getRelMaterials(); value2 = getStudyUI2().getRelMaterials(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Related Materials"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getRelStudies(); value2 = getStudyUI2().getRelStudies(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Related Studies"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getOtherRefs(); value2 = getStudyUI2().getOtherRefs(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Other References"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getTimePeriodCovered(); value2 = getStudyUI2().getTimePeriodCovered(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Time Period Covered"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getDateOfCollection(); value2 = getStudyUI2().getDateOfCollection(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Date of Collection"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getCountry(); value2 = getStudyUI2().getMetadata().getCountry(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Country/Nation"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getGeographicCoverage(); value2 = getStudyUI2().getMetadata().getGeographicCoverage(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Geographic Coverage"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getGeographicUnit(); value2 = getStudyUI2().getMetadata().getGeographicUnit(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Geographic Unit"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getGeographicBoundings(); value2 = getStudyUI2().getGeographicBoundings(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Geographic Bounding Box"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getUnitOfAnalysis(); value2 = getStudyUI2().getMetadata().getUnitOfAnalysis(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Unit of Analysis"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getUniverse(); value2 = getStudyUI2().getMetadata().getUniverse(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Universe"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getKindOfData(); value2 = getStudyUI2().getMetadata().getKindOfData(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Kind of Data"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); abstractandscopeDiffList.add(idi); } } private StudyField getandRemoveStudyFieldFromList(List<StudyField> sfList, String name) { for (Iterator<StudyField> it = sfList.iterator(); it.hasNext();) { StudyField sf = it.next(); if (sf.getName().equals(name)) { it.remove(); //remove the field from the list as it is already being evaluated return sf; } } return null; } private void initDatacollectionDifferencesList () { String value1; String value2; datacollectionDiffList = new ArrayList<catalogInfoDifferenceItem>(); catalogInfoDifferenceItem idi; //CUSTOM FIELDS LOGIC List<StudyField> customFields1 = getStudyUI1().getMetadata().getStudyFields(); List<StudyField> customFields2 = getStudyUI2().getMetadata().getStudyFields(); for (StudyField sf1 : customFields1) { StudyField sf2 = getandRemoveStudyFieldFromList(customFields2, sf1.getName()); value1 = getStudyUI1().getStudyFieldValue(sf1); value2 = sf2 != null ? getStudyUI2().getStudyFieldValue(sf2) : ""; if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName(sf1.getTitle()); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } } // now iterate through remaining fields from other metadata for (StudyField sf2 : customFields2) { value1 = ""; // we know this value doesn't exist value2 = getStudyUI2().getStudyFieldValue(sf2); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName(sf2.getTitle()); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } } // insert auto-generated code here: value1 = getStudyUI1().getMetadata().getTimeMethod(); value2 = getStudyUI2().getMetadata().getTimeMethod(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Time Method"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getDataCollector(); value2 = getStudyUI2().getMetadata().getDataCollector(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Data Collector"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getFrequencyOfDataCollection(); value2 = getStudyUI2().getMetadata().getFrequencyOfDataCollection(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Frequency"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getSamplingProcedure(); value2 = getStudyUI2().getMetadata().getSamplingProcedure(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Sampling Procedure"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getDeviationsFromSampleDesign(); value2 = getStudyUI2().getMetadata().getDeviationsFromSampleDesign(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Major Deviations for Sample Design"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getCollectionMode(); value2 = getStudyUI2().getMetadata().getCollectionMode(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Collection Mode"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getResearchInstrument(); value2 = getStudyUI2().getMetadata().getResearchInstrument(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Type of Research Instrument"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getDataSources(); value2 = getStudyUI2().getMetadata().getDataSources(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Data Sources"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getOriginOfSources(); value2 = getStudyUI2().getMetadata().getOriginOfSources(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Origin of Sources"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getCharacteristicOfSources(); value2 = getStudyUI2().getMetadata().getCharacteristicOfSources(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Characteristic of Sources Noted"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getAccessToSources(); value2 = getStudyUI2().getMetadata().getAccessToSources(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Documentation and Access to Sources"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getDataCollectionSituation(); value2 = getStudyUI2().getMetadata().getDataCollectionSituation(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Characteristics of Data Collection Situation"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getActionsToMinimizeLoss(); value2 = getStudyUI2().getMetadata().getActionsToMinimizeLoss(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Actions to Minimize Losses"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getControlOperations(); value2 = getStudyUI2().getMetadata().getControlOperations(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Control Operations"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getWeighting(); value2 = getStudyUI2().getMetadata().getWeighting(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Weighting"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getCleaningOperations(); value2 = getStudyUI2().getMetadata().getCleaningOperations(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Cleaning Operations"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getStudyLevelErrorNotes(); value2 = getStudyUI2().getMetadata().getStudyLevelErrorNotes(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Study Level Error Notes"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getResponseRate(); value2 = getStudyUI2().getMetadata().getResponseRate(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Response Rate"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getSamplingErrorEstimate(); value2 = getStudyUI2().getMetadata().getSamplingErrorEstimate(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Estimates of Sampling Error "); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getOtherDataAppraisal(); value2 = getStudyUI2().getMetadata().getOtherDataAppraisal(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Other Forms of Data Appraisal"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); datacollectionDiffList.add(idi); } } private void initDataavailDifferencesList () { String value1; String value2; dataavailDiffList = new ArrayList<catalogInfoDifferenceItem>(); catalogInfoDifferenceItem idi; // insert auto-generated code here: value1 = getStudyUI1().getMetadata().getPlaceOfAccess(); value2 = getStudyUI2().getMetadata().getPlaceOfAccess(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Data Access Place"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); dataavailDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getOriginalArchive(); value2 = getStudyUI2().getMetadata().getOriginalArchive(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Original Archive"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); dataavailDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getAvailabilityStatus(); value2 = getStudyUI2().getMetadata().getAvailabilityStatus(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Availability Status"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); dataavailDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getCollectionSize(); value2 = getStudyUI2().getMetadata().getCollectionSize(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Size of Collection"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); dataavailDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getStudyCompletion(); value2 = getStudyUI2().getMetadata().getStudyCompletion(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Study Completion"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); dataavailDiffList.add(idi); } } private void initTermsofuseDifferencesList () { String value1; String value2; termsofuseDiffList = new ArrayList<catalogInfoDifferenceItem>(); catalogInfoDifferenceItem idi; // insert auto-generated code here: value1 = getStudyUI1().getMetadata().getConfidentialityDeclaration(); value2 = getStudyUI2().getMetadata().getConfidentialityDeclaration(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Confidentiality Declaration"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); termsofuseDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getSpecialPermissions(); value2 = getStudyUI2().getMetadata().getSpecialPermissions(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Special Permissions"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); termsofuseDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getRestrictions(); value2 = getStudyUI2().getMetadata().getRestrictions(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Restrictions"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); termsofuseDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getContact(); value2 = getStudyUI2().getMetadata().getContact(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Contact"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); termsofuseDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getCitationRequirements(); value2 = getStudyUI2().getMetadata().getCitationRequirements(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Citation Requirements"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); termsofuseDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getDepositorRequirements(); value2 = getStudyUI2().getMetadata().getDepositorRequirements(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Depositor Requirements"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); termsofuseDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getConditions(); value2 = getStudyUI2().getMetadata().getConditions(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Conditions"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); termsofuseDiffList.add(idi); } value1 = getStudyUI1().getMetadata().getDisclaimer(); value2 = getStudyUI2().getMetadata().getDisclaimer(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Disclaimer"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); termsofuseDiffList.add(idi); } } private void initNotesDifferencesList () { String value1; String value2; notesDiffList = new ArrayList<catalogInfoDifferenceItem>(); catalogInfoDifferenceItem idi; // insert auto-generated code here: value1 = getStudyUI1().getNotes(); value2 = getStudyUI2().getNotes(); if (value1 == null || value1.equals("") || value1.equals(" ")) { value1 = "[Empty]"; } if (value2 == null || value2.equals("") || value2.equals(" ")) { value2 = "[Empty]"; } if(!value1.equals(value2)) { idi = new catalogInfoDifferenceItem(); idi.setFieldName("Notes"); idi.setFieldValue1(value1); idi.setFieldValue2(value2); notesDiffList.add(idi); } } public boolean isEmpty(String s) { if (s == null || s.trim().equals("")) { return true; } else { return false; } } public class catalogInfoDifferenceItem { public catalogInfoDifferenceItem () { } private String fieldName; private String fieldValue1; private String fieldValue2; public String getFieldName() { return fieldName; } public void setFieldName(String fn) { this.fieldName = fn; } public String getFieldValue1() { return fieldValue1; } public void setFieldValue1(String fv) { this.fieldValue1 = fv; } public String getFieldValue2() { return fieldValue2; } public void setFieldValue2(String fv) { this.fieldValue2 = fv; } } public class studyFileDifferenceItem { public studyFileDifferenceItem () { } private String fileId; private String fileName1; private String fileType1; private String fileSize1; private String fileCat1; private String fileDesc1; private String fileName2; private String fileType2; private String fileSize2; private String fileCat2; private String fileDesc2; private boolean file1Empty = false; private boolean file2Empty = false; public String getFileId() { return fileId; } public void setFileId(String fid) { this.fileId = fid; } public String getFileName1() { return fileName1; } public void setFileName1(String fn) { this.fileName1 = fn; } public String getFileType1() { return fileType1; } public void setFileType1(String ft) { this.fileType1 = ft; } public String getFileSize1() { return fileSize1; } public void setFileSize1(String fs) { this.fileSize1 = fs; } public String getFileCat1() { return fileCat1; } public void setFileCat1(String fc) { this.fileCat1 = fc; } public String getFileDesc1() { return fileDesc1; } public void setFileDesc1(String fd) { this.fileDesc1 = fd; } public String getFileName2() { return fileName2; } public void setFileName2(String fn) { this.fileName2 = fn; } public String getFileType2() { return fileType2; } public void setFileType2(String ft) { this.fileType2 = ft; } public String getFileSize2() { return fileSize2; } public void setFileSize2(String fs) { this.fileSize2 = fs; } public String getFileCat2() { return fileCat2; } public void setFileCat2(String fc) { this.fileCat2 = fc; } public String getFileDesc2() { return fileDesc2; } public void setFileDesc2(String fd) { this.fileDesc2 = fd; } public boolean isFile1Empty() { return file1Empty; } public boolean isFile2Empty() { return file2Empty; } public void setFile1Empty(boolean state) { file1Empty = state; } public void setFile2Empty(boolean state) { file2Empty = state; } } }