/*
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;
}
}