/* Copyright (c) 2009 The Regents of the University of California. All rights reserved. Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.. */ package org.clothocad.hibernate.data; // Generated Jun 1, 2010 8:47:54 PM by Hibernate Tools 3.2.1.GA import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import org.clothocore.api.data.Note; import org.clothocore.api.data.Note.NoteDatum; import org.clothocore.api.data.ObjBase; import org.clothocore.api.data.ObjBase.ObjBaseDatum; import org.clothocore.api.data.ObjType; import org.clothocad.hibernate.hibernateDatum; import org.clothocad.hibernate.HibernateConnection; /** * NoteTable generated by hbm2java */ public class NoteTable implements java.io.Serializable, hibernateDatum { public static ObjType getType( Enum field ) { if ( field.getDeclaringClass() != Note.Fields.class ) { return null; } Note.Fields f = (Note.Fields) field; switch ( f ) { case AUTHOR: return ObjType.PERSON; case WIKITEXT: return ObjType.WIKITEXT; default: return null; } } public NoteTable( Note n ) { this.idNote = n.getUUID(); this.name = n.getName(); this.dateCreated = n.getDateCreated(); this.lastModified = n.getLastModified(); if ( n.getAuthor() != null ) { this.personTable = new PersonTable( n.getAuthor().getUUID() ); } if ( n.getWikiText() != null ) { this.wikitextTable = new WikitextTable( n.getWikiText().getUUID() ); } if(!n.isInDatabase()) { needsSecondaryProcessing = true; return; } HashSet<String> existingLinks = new HashSet<String>(); //Remove old Note:Factoid links String query = "from NoteFactoidXref where noteId='" + idNote + "'"; Iterator xrefs = HibernateConnection.connection.query( query ); while ( xrefs.hasNext() ) { NoteFactoidXref cx = (NoteFactoidXref) xrefs.next(); String uuid = cx.getId().getFactoidId(); existingLinks.add( uuid ); if ( !n.getFactoidsLinks().contains( uuid ) ) { HibernateConnection.connection.deleteDatum( cx ); } } //Save all the new Xrefs for factoids for ( String uuid : n.getFactoidsLinks() ) { if ( !existingLinks.contains( uuid ) ) { NoteFactoidXrefId cxi = new NoteFactoidXrefId( idNote, uuid ); NoteFactoidXref cxr = new NoteFactoidXref( cxi, new FactoidTable( uuid ), new NoteTable( idNote ) ); noteFactoidXrefs.add( cxr ); HibernateConnection.connection.saveDatum( cxr ); } } existingLinks = new HashSet<String>(); //Remove old Note:Note links query = "from NoteNoteXref where parentNoteId='" + idNote + "'"; xrefs = HibernateConnection.connection.query( query ); while ( xrefs.hasNext() ) { NoteNoteXref cx = (NoteNoteXref) xrefs.next(); String uuid = cx.getId().getChildNoteId(); existingLinks.add( uuid ); if ( !n.getChildNoteLinks().contains( uuid ) ) { HibernateConnection.connection.deleteDatum( cx ); } } //Save all the new Xrefs for child notes for ( String uuid : n.getChildNoteLinks() ) { if ( !existingLinks.contains( uuid ) ) { NoteNoteXrefId cxi = new NoteNoteXrefId( idNote, uuid ); NoteNoteXref cxr = new NoteNoteXref( cxi, new NoteTable( idNote ), new NoteTable( uuid ) ); noteNoteXrefsForParentNoteId.add( cxr ); HibernateConnection.connection.saveDatum( cxr ); } } } @Override public void runSecondaryProcessing(ObjBase obj) { Note n = (Note) obj; //Save all the new Xrefs for factoids for ( String uuid : n.getFactoidsLinks() ) { NoteFactoidXrefId cxi = new NoteFactoidXrefId( idNote, uuid ); NoteFactoidXref cxr = new NoteFactoidXref( cxi, new FactoidTable( uuid ), new NoteTable( idNote ) ); noteFactoidXrefs.add( cxr ); HibernateConnection.connection.saveDatum( cxr ); } //Save all the new Xrefs for child notes for ( String uuid : n.getChildNoteLinks() ) { NoteNoteXrefId cxi = new NoteNoteXrefId( idNote, uuid ); NoteNoteXref cxr = new NoteNoteXref( cxi, new NoteTable( idNote ), new NoteTable( uuid ) ); noteNoteXrefsForParentNoteId.add( cxr ); HibernateConnection.connection.saveDatum( cxr ); } needsSecondaryProcessing = false; } @Override public boolean needsSecondaryProcessing() { return this.needsSecondaryProcessing; } @Override public ObjBase getObject() { Note.NoteDatum d = (NoteDatum) getObjBaseDatum(); Note n = new Note( d ); return n; } @Override public ObjBaseDatum getObjBaseDatum() { String authorUUID = null, wikiUUUI = null; if ( personTable != null ) { authorUUID = personTable.getUUID(); } if ( wikitextTable != null ) { wikiUUUI = wikitextTable.getUUID(); } //find all the factoid links HashSet<String> factoidlist = new HashSet<String>(); Iterator<hibernateDatum> objs = this.noteFactoidXrefs.iterator(); while ( objs.hasNext() ) { NoteFactoidXref cx = (NoteFactoidXref) objs.next(); String uuid = cx.getId().getFactoidId(); factoidlist.add( uuid ); } //find all the child Note links HashSet<String> childNoteList = new HashSet<String>(); objs = this.noteNoteXrefsForParentNoteId.iterator(); while ( objs.hasNext() ) { NoteNoteXref cx = (NoteNoteXref) objs.next(); String uuid = cx.getId().getChildNoteId(); childNoteList.add( uuid ); } //find all the parent Note links HashSet<String> parentNoteList = new HashSet<String>(); objs = this.noteNoteXrefsForChildNoteId.iterator(); while ( objs.hasNext() ) { NoteNoteXref cx = (NoteNoteXref) objs.next(); String uuid = cx.getId().getParentNoteId(); parentNoteList.add( uuid ); } //find all the strain links HashSet<String> strainLinks = new HashSet<String>(); objs = this.strainNoteXrefs.iterator(); while ( objs.hasNext() ) { StrainNoteXref cx = (StrainNoteXref) objs.next(); String uuid = cx.getId().getStrainId(); strainLinks.add( uuid ); } //find all the feature links HashSet<String> featureLinks = new HashSet<String>(); objs = this.featureNoteXrefs.iterator(); while ( objs.hasNext() ) { FeatureNoteXref cx = (FeatureNoteXref) objs.next(); String uuid = cx.getId().getFeatureId(); featureLinks.add( uuid ); } //find all the family links HashSet<String> familyLinks = new HashSet<String>(); objs = this.familyNoteXrefs.iterator(); while ( objs.hasNext() ) { FamilyNoteXref cx = (FamilyNoteXref) objs.next(); String uuid = cx.getId().getFamilyId(); familyLinks.add( uuid ); } Note.NoteDatum d = new Note.NoteDatum(); d.uuid = idNote; d.name = name; d.dateCreated = dateCreated; d.lastModified = lastModified; d._authorUUID = authorUUID; d._wikiUUID = wikiUUUI; d._factoids = factoidlist; d._parentNotes = parentNoteList; d._childNotes = childNoteList; d._strainLinks = strainLinks; d._featureLinks = featureLinks; d._familyLinks = familyLinks; return d; } @Override public String getUUID() { return idNote; } public static String translate( Enum field ) { if ( field.getDeclaringClass() != Note.Fields.class ) { return null; } Note.Fields f = (Note.Fields) field; switch ( f ) { case NAME: return "name"; case DATE_CREATED: return "dateCreated"; case LAST_MODIFIED: return "lastModifed"; case AUTHOR: return "personTable"; case WIKITEXT: return "wikitextTable"; default: return null; } } private boolean needsSecondaryProcessing = false; /***** AUTO-GENERATED CODE *****/ private String idNote; private PersonTable personTable; private WikitextTable wikitextTable; private String name; private Date dateCreated; private Date lastModified; private Set strainNoteXrefs = new HashSet( 0 ); private Set featureNoteXrefs = new HashSet( 0 ); private Set noteNoteXrefsForChildNoteId = new HashSet( 0 ); private Set noteFactoidXrefs = new HashSet( 0 ); private Set noteNoteXrefsForParentNoteId = new HashSet( 0 ); private Set familyNoteXrefs = new HashSet( 0 ); public NoteTable() { } public NoteTable( String idNote ) { this.idNote = idNote; } public NoteTable( String idNote, PersonTable personTable, WikitextTable wikitextTable, String name, Date dateCreated, Date lastModified, Set strainNoteXrefs, Set featureNoteXrefs, Set noteNoteXrefsForChildNoteId, Set noteFactoidXrefs, Set noteNoteXrefsForParentNoteId, Set familyNoteXrefs ) { this.idNote = idNote; this.personTable = personTable; this.wikitextTable = wikitextTable; this.name = name; this.dateCreated = dateCreated; this.lastModified = lastModified; this.strainNoteXrefs = strainNoteXrefs; this.featureNoteXrefs = featureNoteXrefs; this.noteNoteXrefsForChildNoteId = noteNoteXrefsForChildNoteId; this.noteFactoidXrefs = noteFactoidXrefs; this.noteNoteXrefsForParentNoteId = noteNoteXrefsForParentNoteId; this.familyNoteXrefs = familyNoteXrefs; } public String getIdNote() { return this.idNote; } public void setIdNote( String idNote ) { this.idNote = idNote; } public PersonTable getPersonTable() { return this.personTable; } public void setPersonTable( PersonTable personTable ) { this.personTable = personTable; } public WikitextTable getWikitextTable() { return this.wikitextTable; } public void setWikitextTable( WikitextTable wikitextTable ) { this.wikitextTable = wikitextTable; } public String getName() { return this.name; } public void setName( String name ) { this.name = name; } public Date getDateCreated() { return this.dateCreated; } public void setDateCreated( Date dateCreated ) { this.dateCreated = dateCreated; } public Date getLastModified() { return this.lastModified; } public void setLastModified( Date lastModified ) { this.lastModified = lastModified; } public Set getStrainNoteXrefs() { return this.strainNoteXrefs; } public void setStrainNoteXrefs( Set strainNoteXrefs ) { this.strainNoteXrefs = strainNoteXrefs; } public Set getFeatureNoteXrefs() { return this.featureNoteXrefs; } public void setFeatureNoteXrefs( Set featureNoteXrefs ) { this.featureNoteXrefs = featureNoteXrefs; } public Set getNoteNoteXrefsForChildNoteId() { return this.noteNoteXrefsForChildNoteId; } public void setNoteNoteXrefsForChildNoteId( Set noteNoteXrefsForChildNoteId ) { this.noteNoteXrefsForChildNoteId = noteNoteXrefsForChildNoteId; } public Set getNoteFactoidXrefs() { return this.noteFactoidXrefs; } public void setNoteFactoidXrefs( Set noteFactoidXrefs ) { this.noteFactoidXrefs = noteFactoidXrefs; } public Set getNoteNoteXrefsForParentNoteId() { return this.noteNoteXrefsForParentNoteId; } public void setNoteNoteXrefsForParentNoteId( Set noteNoteXrefsForParentNoteId ) { this.noteNoteXrefsForParentNoteId = noteNoteXrefsForParentNoteId; } public Set getFamilyNoteXrefs() { return this.familyNoteXrefs; } public void setFamilyNoteXrefs( Set familyNoteXrefs ) { this.familyNoteXrefs = familyNoteXrefs; } }