package edu.ucsf.mousedatabase.objects; import java.util.*; import edu.ucsf.mousedatabase.DBConnect; import edu.ucsf.mousedatabase.HTMLGeneration; import edu.ucsf.mousedatabase.beans.UserData; public class MouseRecord { String mouseID; String mouseName; String officialMouseName; String mouseType; String geneID; String geneName; String geneSymbol; String targetGeneID; String targetGeneName; String targetGeneSymbol; String modificationType; String regulatoryElement; String expressedSequence; String otherComment; String reporter; String transgenicType; String mtaRequired; String generalComment; String backgroundStrain; String source; String officialSymbol; String repositoryCatalogNumber; String repositoryTypeID; String gensat; String cryopreserved; boolean endangered; ArrayList<String> pubmedIDs; ArrayList<MouseHolder> holders; String status; String submittedMouseID; String previewLink; String adminComment; @Override public boolean equals(Object o) { if (o instanceof MouseRecord) { return ((MouseRecord)o).getMouseID().equals(this.getMouseID()); } return false; } @Override public int hashCode() { return this.getMouseID().hashCode(); } public String getOfficialMouseName() { return officialMouseName; } public void setOfficialMouseName(String officialMouseName) { this.officialMouseName = officialMouseName; } public String getSubmittedMouseID() { return submittedMouseID; } public void setSubmittedMouseID(String submittedMouseID) { this.submittedMouseID = submittedMouseID; } public void cleanHiddenFields() { //NOT FULLY IMPLEMENTED - using javascript to clear hidden fields on edit form for now. if (getModificationType() != null) { if (!getModificationType().equals("targeted knock-in")) { setTargetGeneID(null); setReporter(null); setOtherComment(null); setExpressedSequence(null); } else if (getModificationType().equals("targeted knock-in")) { if (getExpressedSequence() != null) { if (getExpressedSequence().equalsIgnoreCase("Mouse gene") || getExpressedSequence().equalsIgnoreCase("Mouse Gene (unmodified)")) { setReporter(null); setOtherComment(null); } if (getExpressedSequence().equalsIgnoreCase("Cre")) { setReporter(null); setOtherComment(null); setTargetGeneID(null); } if (getExpressedSequence().equalsIgnoreCase("Reporter")) { setTargetGeneID(null); setOtherComment(null); } if (getExpressedSequence().equalsIgnoreCase("Other") || getExpressedSequence().equalsIgnoreCase("Modified mouse gene or Other")) { setTargetGeneID(null); setReporter(null); } } } } } public boolean isMA(){ return mouseType!= null && mouseType.equalsIgnoreCase("Mutant Allele");} public boolean isTG(){ return mouseType!= null && mouseType.equalsIgnoreCase("Transgene");} public boolean isIS(){return mouseType!= null && mouseType.equalsIgnoreCase("Inbred Strain");} public boolean hasType() { return mouseType != null; } public boolean isCryoOnly() { if (holders == null || holders.size() <= 0) { return false; } for(MouseHolder holder : holders) { if (holder.getCryoLiveStatus().contains("Live")) { return false; } } return true; } public boolean isHidden() { if (getHolders() == null || getHolders().size() <= 0) { return true; } if (getStatus() != null && !getStatus().equals("live")) { return true; } boolean covertOnly = true; for (MouseHolder holder : getHolders()) { covertOnly &= holder.isCovert(); } return covertOnly; } public String getMouseID() { return mouseID; } public void setMouseID(String mouseID) { this.mouseID = mouseID; } public String getMouseName() { return mouseName; } public void setMouseName(String mouseName) { this.mouseName = mouseName; } public String getMouseType() { return mouseType; } public void setMouseType(String mouseType) { this.mouseType = mouseType; } public String getGeneID() { return geneID; } public void setGeneID(String geneID) { this.geneID = geneID; } public String getGeneName() { return geneName; } public void setGeneName(String geneName) { this.geneName = geneName; } public String getGeneSymbol() { return geneSymbol; } public void setGeneSymbol(String geneSymbol) { this.geneSymbol = geneSymbol; } public String getTargetGeneID() { return targetGeneID; } public void setTargetGeneID(String targetGeneID) { this.targetGeneID = targetGeneID; } public String getTargetGeneName() { return targetGeneName; } public void setTargetGeneName(String targetGeneName) { this.targetGeneName = targetGeneName; } public String getTargetGeneSymbol() { return targetGeneSymbol; } public void setTargetGeneSymbol(String targetGeneSymbol) { this.targetGeneSymbol = targetGeneSymbol; } public String getModificationType() { return modificationType; } public void setModificationType(String modificationType) { this.modificationType = modificationType; } public String getRegulatoryElement() { return regulatoryElement; } public void setRegulatoryElement(String regulatoryElement) { this.regulatoryElement = regulatoryElement; } public String getExpressedSequence() { return expressedSequence; } public void setExpressedSequence(String expressedSequence) { this.expressedSequence = expressedSequence; } public String getOtherComment() { return otherComment; } public void setOtherComment(String otherComment) { this.otherComment = otherComment; } public String getReporter() { return reporter; } public void setReporter(String reporter) { this.reporter = reporter; } public String getTransgenicType() { return transgenicType; } public void setTransgenicType(String transgenicType) { this.transgenicType = transgenicType; } public String getMtaRequired() { return mtaRequired; } public void setMtaRequired(String mtaRequired) { this.mtaRequired = mtaRequired; } public String getGeneralComment() { return generalComment; } public void setGeneralComment(String generalComment) { this.generalComment = generalComment; } public String getBackgroundStrain() { return backgroundStrain; } public void setBackgroundStrain(String backgroundStrain) { this.backgroundStrain = backgroundStrain; } public String getSource() { return source; } public void setSource(String source) { this.source = source; } public String getRepositoryCatalogNumber() { return repositoryCatalogNumber; } public void setRepositoryCatalogNumber(String repositoryCatalogNumber) { this.repositoryCatalogNumber = repositoryCatalogNumber; } public String getRepositoryTypeID() { return repositoryTypeID; } public void setRepositoryTypeID(String repositoryTypeID) { this.repositoryTypeID = repositoryTypeID; } public String getGensat() { return gensat; } public void setGensat(String gensat) { this.gensat = gensat; } public ArrayList<String> getPubmedIDs() { return pubmedIDs; } public void setPubmedIDs(ArrayList<String> pubmedIDs) { this.pubmedIDs = pubmedIDs; } public ArrayList<MouseHolder> getHolders() { return holders; } public void setHolders(ArrayList<MouseHolder> holders) { this.holders = holders; } public String getCryopreserved() { return cryopreserved; } public void setCryopreserved(String cryopreserved) { this.cryopreserved = cryopreserved; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public boolean isEndangered() { return endangered; } public void setEndangered(boolean endangered) { this.endangered = endangered; } public String getOfficialSymbol() { return officialSymbol; } public void setOfficialSymbol(String officialSymbol) { this.officialSymbol = officialSymbol; } public String getAdminComment() { return adminComment; } public void setAdminComment(String adminComment) { this.adminComment = adminComment; } public String getPreviewLink() { return DBConnect.loadSetting("general_site_hostname").value + HTMLGeneration.siteRoot + "incomplete.jsp?com=rec&obj=" + this.mouseID; } public void prepareForSerialization(){ if (this.status != null && this.status.equalsIgnoreCase("incomplete")) { this.previewLink = getPreviewLink(); } if (this.isMA() || this.isTG()){ this.setOfficialSymbol(this.getSource()); } } public static Properties GetPropertiesString(UserData submitterData, MouseRecord newMouse) { Properties props = new Properties(); //temporary properties conversion. //general props.setProperty("First", submitterData.getFirstName()); props.setProperty("Last",submitterData.getLastName()); props.setProperty("Dept",submitterData.getDepartment()); props.setProperty("Email",submitterData.getEmail()); props.setProperty("Tel",submitterData.getTelephoneNumber()); //all types props.setProperty("MouseType", newMouse.getMouseType()); if(newMouse.isMA() || newMouse.isTG()) { //props.setProperty("isPublished", newMouse.getIsPublished()); } props.setProperty("mouseName",emptyIfNull(newMouse.getMouseName())); ArrayList<MouseHolder> holders = newMouse.getHolders(); for (MouseHolder mouseHolder : holders) { props.setProperty("holder",emptyIfNull(mouseHolder.getFullname())); props.setProperty("facility",emptyIfNull(mouseHolder.getFacilityName())); break; } props.setProperty("comment",emptyIfNull(newMouse.getGeneralComment())); //mutant allele if(newMouse.isMA()) { props.setProperty("modificationType",emptyIfNull(newMouse.getModificationType())); props.setProperty("geneOfMutantAlleleMouse",emptyIfNull(newMouse.getGeneID())); } //transgenic if(newMouse.isTG()) { props.setProperty("TransgenicType", emptyIfNull(newMouse.getTransgenicType())); props.setProperty("regulatoryElement",emptyIfNull(newMouse.getRegulatoryElement())); props.setProperty("knockedInGene",emptyIfNull(newMouse.getTargetGeneID())); props.setProperty("gensatFounderLine",emptyIfNull(newMouse.getGensat())); } //inbred strain if(newMouse.isIS()) { props.setProperty("supplierForInbredStrain",emptyIfNull(newMouse.getSource())); //props.setProperty("supplierForInbredStrainCatalogNumber",emptyIfNull(newMouse.getISSupplierCatalogNumber())); //props.setProperty("supplierForInbredStrainCatalogUrl",emptyIfNull(newMouse.getISSupplierCatalogUrl())); } props.setProperty("cryopreserved",emptyIfNull(newMouse.getCryopreserved())); //common stuff if(newMouse.isMA() || newMouse.isTG()) { props.setProperty("ExpressedSequence",emptyIfNull(newMouse.getExpressedSequence())); props.setProperty("reporter",emptyIfNull(newMouse.getReporter())); props.setProperty("mouse gene",emptyIfNull(newMouse.getGeneID())); props.setProperty("other",emptyIfNull(newMouse.getOtherComment())); props.setProperty("strain",emptyIfNull(newMouse.getBackgroundStrain())); props.setProperty("mta",emptyIfNull(newMouse.getMtaRequired())); //props.setProperty("producedInLabOfHolder",emptyIfNull(newMouse.getProducedInLabOfHolder())); //if(newMouse.isPublished()) //{ props.setProperty("repository",emptyIfNull(newMouse.getRepositoryCatalogNumber())); props.setProperty("source",emptyIfNull(newMouse.getSource())); for (String pmid : newMouse.getPubmedIDs()) { props.setProperty("pmid",pmid); break; } //} //props.setProperty("geneValid",emptyIfNull(newMouse.getMAMgiGeneIDValid())); // props.setProperty("geneValidationString",emptyIfNull(newMouse.getMAMgiGeneIDValidationString())); //props.setProperty("targetGeneValid",emptyIfNull(newMouse.getTGMouseGeneValid())); //props.setProperty("targetGeneValidationString",emptyIfNull(newMouse.getTGMouseGeneValidationString())); } return props; } private static String emptyIfNull(String input) { if (input != null) { return input; } else { return ""; } } }