From: Franz W. <jav...@us...> - 2005-09-29 15:41:40
|
Update of /cvsroot/dcm4che/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/entity In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1124/src/java/org/dcm4chex/archive/ejb/entity Modified Files: InstanceBean.java SeriesBean.java StudyBean.java PatientBean.java Log Message: Trashfolder support. hidden field implemented Index: InstanceBean.java =================================================================== RCS file: /cvsroot/dcm4che/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/entity/InstanceBean.java,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** InstanceBean.java 10 Aug 2005 17:49:34 -0000 1.50 --- InstanceBean.java 29 Sep 2005 15:41:25 -0000 1.51 *************** *** 64,76 **** * * @ejb.finder signature="java.util.Collection findNotOnMediaAndStudyReceivedBefore(java.sql.Timestamp receivedBefore)" ! * query="SELECT OBJECT(i) FROM Instance AS i WHERE i.media IS NULL AND i.series.hidden = false AND i.series.study.createdTime < ?1" * transaction-type="Supports" * * @ejb.finder signature="java.util.Collection findByPatientAndSopCuid(org.dcm4chex.archive.ejb.interfaces.PatientLocal patient, java.lang.String uid)" ! * query="SELECT OBJECT(i) FROM Instance AS i WHERE i.series.hidden = false AND i.series.study.patient = ?1 AND i.sopCuid = ?2" * transaction-type="Supports" * * @ejb.finder signature="java.util.Collection findByPatientAndSrCode(org.dcm4chex.archive.ejb.interfaces.PatientLocal patient, org.dcm4chex.archive.ejb.interfaces.CodeLocal srcode)" ! * query="SELECT OBJECT(i) FROM Instance AS i WHERE i.series.hidden = false AND i.series.study.patient = ?1 AND i.srCode = ?2" * transaction-type="Supports" * --- 64,76 ---- * * @ejb.finder signature="java.util.Collection findNotOnMediaAndStudyReceivedBefore(java.sql.Timestamp receivedBefore)" ! * query="SELECT OBJECT(i) FROM Instance AS i WHERE i.media IS NULL AND i.hidden = false AND i.series.study.createdTime < ?1" * transaction-type="Supports" * * @ejb.finder signature="java.util.Collection findByPatientAndSopCuid(org.dcm4chex.archive.ejb.interfaces.PatientLocal patient, java.lang.String uid)" ! * query="SELECT OBJECT(i) FROM Instance AS i WHERE i.hidden = false AND i.series.study.patient = ?1 AND i.sopCuid = ?2" * transaction-type="Supports" * * @ejb.finder signature="java.util.Collection findByPatientAndSrCode(org.dcm4chex.archive.ejb.interfaces.PatientLocal patient, org.dcm4chex.archive.ejb.interfaces.CodeLocal srcode)" ! * query="SELECT OBJECT(i) FROM Instance AS i WHERE i.hidden = false AND i.series.study.patient = ?1 AND i.srCode = ?2" * transaction-type="Supports" * *************** *** 477,480 **** --- 477,482 ---- ds.setPrivateCreatorID(PrivateTags.CreatorID); ds.putUL(PrivateTags.InstancePk, getPk().intValue()); + if ( getHiddenSafe() ) + ds.putSS(PrivateTags.HiddenInstance,1); MediaLocal media = getMedia(); if (media != null && media.getMediaStatus() == MediaDTO.COMPLETED) { Index: SeriesBean.java =================================================================== RCS file: /cvsroot/dcm4che/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/entity/SeriesBean.java,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** SeriesBean.java 15 Jun 2005 15:36:26 -0000 1.55 --- SeriesBean.java 29 Sep 2005 15:41:25 -0000 1.56 *************** *** 32,35 **** --- 32,36 ---- import org.dcm4chex.archive.common.DatasetUtils; import org.dcm4chex.archive.common.PrivateTags; + import org.dcm4chex.archive.ejb.interfaces.InstanceLocal; import org.dcm4chex.archive.ejb.interfaces.MPPSLocal; import org.dcm4chex.archive.ejb.interfaces.MPPSLocalHome; *************** *** 67,71 **** * * @ejb.finder signature="java.util.Collection findWithNoPpsIuidFromSrcAETReceivedBefore(java.lang.String srcAET, java.sql.Timestamp receivedBefore)" ! * query="SELECT OBJECT(s) FROM Series AS s WHERE s.ppsIuid IS NULL AND s.sourceAET = ?1 AND s.createdTime < ?2" * transaction-type="Supports" * @jboss.query signature="java.util.Collection findWithNoPpsIuidFromSrcAETReceivedBefore(java.lang.String srcAET, java.sql.Timestamp receivedBefore)" --- 68,72 ---- * * @ejb.finder signature="java.util.Collection findWithNoPpsIuidFromSrcAETReceivedBefore(java.lang.String srcAET, java.sql.Timestamp receivedBefore)" ! * query="SELECT OBJECT(s) FROM Series AS s WHERE s.hidden = FALSE AND s.ppsIuid IS NULL AND s.sourceAET = ?1 AND s.createdTime < ?2" * transaction-type="Supports" * @jboss.query signature="java.util.Collection findWithNoPpsIuidFromSrcAETReceivedBefore(java.lang.String srcAET, java.sql.Timestamp receivedBefore)" *************** *** 74,84 **** * * @jboss.query signature="int ejbSelectNumberOfSeriesRelatedInstancesWithInternalRetrieveAET(java.lang.Integer pk, java.lang.String retrieveAET)" ! * query="SELECT COUNT(DISTINCT i) FROM Series s, IN(s.instances) i, IN(i.files) f WHERE s.pk = ?1 AND f.fileSystem.retrieveAET = ?2" * @jboss.query signature="int ejbSelectNumberOfSeriesRelatedInstancesOnMediaWithStatus(java.lang.Integer pk, int status)" * query="SELECT COUNT(i) FROM Instance i WHERE i.series.pk = ?1 AND i.media.mediaStatus = ?2" * @jboss.query signature="int ejbSelectNumberOfSeriesRelatedInstances(java.lang.Integer pk)" ! * query="SELECT COUNT(i) FROM Instance i WHERE i.series.pk = ?1" * @jboss.query signature="int ejbSelectAvailability(java.lang.Integer pk)" ! * query="SELECT MAX(i.availability) FROM Instance i WHERE i.series.pk = ?1" * * @ejb.ejb-ref ejb-name="MPPS" view-type="local" ref-name="ejb/MPPS" --- 75,85 ---- * * @jboss.query signature="int ejbSelectNumberOfSeriesRelatedInstancesWithInternalRetrieveAET(java.lang.Integer pk, java.lang.String retrieveAET)" ! * query="SELECT COUNT(DISTINCT i) FROM Series s, IN(s.instances) i, IN(i.files) f WHERE s.pk = ?1 AND i.hidden = FALSE AND f.fileSystem.retrieveAET = ?2" * @jboss.query signature="int ejbSelectNumberOfSeriesRelatedInstancesOnMediaWithStatus(java.lang.Integer pk, int status)" * query="SELECT COUNT(i) FROM Instance i WHERE i.series.pk = ?1 AND i.media.mediaStatus = ?2" * @jboss.query signature="int ejbSelectNumberOfSeriesRelatedInstances(java.lang.Integer pk)" ! * query="SELECT COUNT(i) FROM Instance i WHERE i.hidden = FALSE AND i.series.pk = ?1" * @jboss.query signature="int ejbSelectAvailability(java.lang.Integer pk)" ! * query="SELECT MAX(i.availability) FROM Instance i WHERE i.hidden = FALSE AND i.series.pk = ?1" * * @ejb.ejb-ref ejb-name="MPPS" view-type="local" ref-name="ejb/MPPS" *************** *** 317,320 **** --- 318,334 ---- /** * @ejb.interface-method + */ + public void markDeleted(boolean delete) { + //if (!delete && getHiddenSafe() && isIncorrectWLSelected() ) + // return; + Iterator iter = getInstances().iterator(); + while( iter.hasNext()) { + ((InstanceLocal) iter.next() ).setHidden(delete); + } + setHidden(delete); + } + + /** + * @ejb.interface-method * @ejb.relation name="study-series" role-name="series-of-study" * cascade-delete="yes" *************** *** 329,332 **** --- 343,347 ---- /** + * @ejb.interface-method * @ejb.relation name="mpps-series" role-name="series-of-mpps" * @jboss.relation fk-column="mpps_fk" related-pk-field="pk" *************** *** 367,372 **** throws CreateException { createRequestAttributes(ds.get(Tags.RequestAttributesSeq)); - updateMpps(); setStudy(study); log.info("Created " + prompt()); } --- 382,387 ---- throws CreateException { createRequestAttributes(ds.get(Tags.RequestAttributesSeq)); setStudy(study); + updateMpps(study); log.info("Created " + prompt()); } *************** *** 512,516 **** public boolean updateDerivedFields(boolean numOfInstances, boolean retrieveAETs, boolean externalRettrieveAETs, ! boolean filesetId, boolean availibility) throws FinderException { boolean updated = false; final Integer pk = getPk(); --- 527,531 ---- public boolean updateDerivedFields(boolean numOfInstances, boolean retrieveAETs, boolean externalRettrieveAETs, ! boolean filesetId, boolean availibility, boolean hidden) throws FinderException { boolean updated = false; final Integer pk = getPk(); *************** *** 526,538 **** if (availibility) if (updateAvailability(pk, numI)) updated = true; return updated; } ! private void updateMpps() { final String ppsiuid = getPpsIuid(); MPPSLocal mpps = null; if (ppsiuid != null) try { mpps = mppsHome.findBySopIuid(ppsiuid); ! setHidden(mpps.isIncorrectWorklistEntrySelected()); } catch (ObjectNotFoundException ignore) { } catch (FinderException e) { --- 541,589 ---- if (availibility) if (updateAvailability(pk, numI)) updated = true; + if (hidden) + if (updateHidden(pk)) updated = true; return updated; } ! /** ! * @param pk ! * @return ! */ ! private boolean updateHidden(Integer pk) { ! boolean hidden = getHiddenSafe(); ! if ( hidden ) { ! Iterator iter = this.getInstances().iterator(); ! boolean incorrect = this.isIncorrectWLSelected(); ! InstanceLocal il; ! while ( iter.hasNext() ) { ! if ( !(il=(InstanceLocal) iter.next()).getHiddenSafe() ) { ! if ( incorrect ) { ! //series is hidden and marked as 'incorrect worklist entry selected' ! //->all instances have to be marked deleted! ! il.setHidden(true); ! } else { ! setHidden(false);//a series have to be visible if one of the childs is visible! ! return true; ! } ! } ! } ! } ! return false; ! } ! ! private void updateMpps( StudyLocal study ) { final String ppsiuid = getPpsIuid(); MPPSLocal mpps = null; if (ppsiuid != null) try { mpps = mppsHome.findBySopIuid(ppsiuid); ! if ( mpps.isIncorrectWorklistEntrySelected() ) { ! String prompt = prompt(); ! log.info(prompt+": Incorrect Worklist Entry Selected. Mark as deleted !!!"); ! markDeleted(true); ! if ( study.getSeries().size() <= 1) { ! log.info( prompt+": Set Study hidden !!!"); ! study.setHidden(true); ! } ! } } catch (ObjectNotFoundException ignore) { } catch (FinderException e) { *************** *** 541,545 **** setMpps(mpps); } ! public void ejbRemove() throws RemoveException { log.info("Deleting " + prompt()); --- 592,608 ---- setMpps(mpps); } ! ! private boolean isIncorrectWLSelected() { ! final String ppsiuid = getPpsIuid(); ! if (ppsiuid != null) try { ! if (mppsHome.findBySopIuid(ppsiuid).isIncorrectWorklistEntrySelected()) ! return true; ! } catch (ObjectNotFoundException ignore) { ! } catch (FinderException e) { ! throw new EJBException(e); ! } ! return false; ! } ! public void ejbRemove() throws RemoveException { log.info("Deleting " + prompt()); *************** *** 589,592 **** --- 652,658 ---- ds.putUL(PrivateTags.SeriesPk, getPk().intValue()); ds.putAE(PrivateTags.CallingAET, getSourceAET()); + String ppsiuid = getPpsIuid(); + if ( getHiddenSafe() ) + ds.putSS(PrivateTags.HiddenSeries,1); ds.putIS(Tags.NumberOfSeriesRelatedInstances, getNumberOfSeriesRelatedInstances()); Index: StudyBean.java =================================================================== RCS file: /cvsroot/dcm4che/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/entity/StudyBean.java,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** StudyBean.java 25 Aug 2005 08:22:48 -0000 1.51 --- StudyBean.java 29 Sep 2005 15:41:25 -0000 1.52 *************** *** 9,13 **** package org.dcm4chex.archive.ejb.entity; - import java.sql.Timestamp; import java.util.Iterator; import java.util.Set; --- 9,12 ---- *************** *** 29,32 **** --- 28,32 ---- import org.dcm4chex.archive.ejb.interfaces.MediaLocal; import org.dcm4chex.archive.ejb.interfaces.PatientLocal; + import org.dcm4chex.archive.ejb.interfaces.SeriesLocal; /** *************** *** 56,77 **** * query="" transaction-type="Supports" * @jboss.query signature="java.util.Collection findStudyToCheck(java.sql.Timestamp minCreatedTime, java.sql.Timestamp maxCreatedTime, java.sql.Timestamp checkedBefore, int limit)" ! * query="SELECT OBJECT(s) FROM Study AS s WHERE (s.createdTime BETWEEN ?1 AND ?2) AND (s.timeOfLastConsistencyCheck IS NULL OR s.timeOfLastConsistencyCheck < ?3) LIMIT ?4" * * @jboss.query signature="int ejbSelectNumberOfStudyRelatedSeries(java.lang.Integer pk)" * query="SELECT COUNT(s) FROM Series s WHERE s.hidden = FALSE AND s.study.pk = ?1" * @jboss.query signature="int ejbSelectNumberOfStudyRelatedInstances(java.lang.Integer pk)" ! * query="SELECT COUNT(i) FROM Instance i WHERE i.series.hidden = FALSE AND i.series.study.pk = ?1" * @jboss.query signature="int ejbSelectNumberOfStudyRelatedInstancesWithInternalRetrieveAET(java.lang.Integer pk, java.lang.String retrieveAET)" ! * query="SELECT COUNT(DISTINCT i) FROM Instance i, IN(i.files) f WHERE i.series.hidden = FALSE AND i.series.study.pk = ?1" AND f.fileSystem.retrieveAET = ?2" * @jboss.query signature="int ejbSelectNumberOfStudyRelatedInstancesOnMediaWithStatus(java.lang.Integer pk, int status)" ! * query="SELECT COUNT(i) FROM Instance i WHERE i.series.hidden = FALSE AND i.series.study.pk = ?1 AND i.media.mediaStatus = ?2" * @jboss.query signature="int ejbSelectNumberOfCommitedInstances(java.lang.Integer pk)" ! * query="SELECT COUNT(i) FROM Instance i WHERE i.series.hidden = FALSE AND i.series.study.pk = ?1 AND i.commitment = TRUE" * @jboss.query signature="int ejbSelectNumberOfExternalRetrieveableInstances(java.lang.Integer pk)" ! * query="SELECT COUNT(i) FROM Instance i WHERE i.series.hidden = FALSE AND i.series.study.pk = ?1 AND i.externalRetrieveAET IS NOT NULL" * @jboss.query signature="int ejbSelectAvailability(java.lang.Integer pk)" ! * query="SELECT MAX(i.availability) FROM Instance i WHERE i.series.hidden = FALSE AND i.series.study.pk = ?1" * @jboss.query signature="int ejbSelectStudyFileSize(java.lang.Integer pk)" ! * query="SELECT SUM(f.fileSize) FROM File f WHERE f.instance.series.hidden = FALSE AND f.instance.series.study.pk = ?1" * * --- 56,77 ---- * query="" transaction-type="Supports" * @jboss.query signature="java.util.Collection findStudyToCheck(java.sql.Timestamp minCreatedTime, java.sql.Timestamp maxCreatedTime, java.sql.Timestamp checkedBefore, int limit)" ! * query="SELECT OBJECT(s) FROM Study AS s WHERE s.hidden = FALSE AND (s.createdTime BETWEEN ?1 AND ?2) AND (s.timeOfLastConsistencyCheck IS NULL OR s.timeOfLastConsistencyCheck < ?3) LIMIT ?4" * * @jboss.query signature="int ejbSelectNumberOfStudyRelatedSeries(java.lang.Integer pk)" * query="SELECT COUNT(s) FROM Series s WHERE s.hidden = FALSE AND s.study.pk = ?1" * @jboss.query signature="int ejbSelectNumberOfStudyRelatedInstances(java.lang.Integer pk)" ! * query="SELECT COUNT(i) FROM Instance i WHERE i.hidden = FALSE AND i.series.study.pk = ?1" * @jboss.query signature="int ejbSelectNumberOfStudyRelatedInstancesWithInternalRetrieveAET(java.lang.Integer pk, java.lang.String retrieveAET)" ! * query="SELECT COUNT(DISTINCT i) FROM Instance i, IN(i.files) f WHERE i.hidden = FALSE AND i.series.study.pk = ?1" AND f.fileSystem.retrieveAET = ?2" * @jboss.query signature="int ejbSelectNumberOfStudyRelatedInstancesOnMediaWithStatus(java.lang.Integer pk, int status)" ! * query="SELECT COUNT(i) FROM Instance i WHERE i.hidden = FALSE AND i.series.study.pk = ?1 AND i.media.mediaStatus = ?2" * @jboss.query signature="int ejbSelectNumberOfCommitedInstances(java.lang.Integer pk)" ! * query="SELECT COUNT(i) FROM Instance i WHERE i.hidden = FALSE AND i.series.study.pk = ?1 AND i.commitment = TRUE" * @jboss.query signature="int ejbSelectNumberOfExternalRetrieveableInstances(java.lang.Integer pk)" ! * query="SELECT COUNT(i) FROM Instance i WHERE i.hidden = FALSE AND i.series.study.pk = ?1 AND i.externalRetrieveAET IS NOT NULL" * @jboss.query signature="int ejbSelectAvailability(java.lang.Integer pk)" ! * query="SELECT MAX(i.availability) FROM Instance i WHERE i.hidden = FALSE AND i.series.study.pk = ?1" * @jboss.query signature="int ejbSelectStudyFileSize(java.lang.Integer pk)" ! * query="SELECT SUM(f.fileSize) FROM File f WHERE f.instance.hidden = FALSE AND f.instance.series.study.pk = ?1" * * *************** *** 274,278 **** */ public abstract void setHidden(boolean hidden); ! /** * Modalities In Study --- 274,289 ---- */ public abstract void setHidden(boolean hidden); ! ! /** ! * @ejb.interface-method ! */ ! public void markDeleted(boolean deleted) { ! Iterator iter = getSeries().iterator(); ! while( iter.hasNext() ) { ! ( (SeriesLocal) iter.next() ).markDeleted( deleted ); ! } ! setHidden(deleted); ! } ! /** * Modalities In Study *************** *** 569,572 **** --- 580,601 ---- return updated; } + + /** + * @param pk + * @return + */ + private boolean updateHidden(Integer pk) { + if (getHiddenSafe()) {//we have only to check if this study can be really marked deleted (only if all childs are marked deleted)! + Iterator iter = this.getSeries().iterator(); + while ( iter.hasNext() ) { + if ( !((SeriesLocal) iter.next()).getHiddenSafe() ) { + setHidden(false); + return true; + } + } + } + return false; + } + /** *************** *** 575,579 **** public boolean updateDerivedFields(boolean numOfInstances, boolean retrieveAETs, boolean externalRettrieveAETs, ! boolean filesetId, boolean availibility, boolean modsInStudies) throws FinderException { boolean updated = false; --- 604,608 ---- public boolean updateDerivedFields(boolean numOfInstances, boolean retrieveAETs, boolean externalRettrieveAETs, ! boolean filesetId, boolean availibility, boolean modsInStudies, boolean hidden) throws FinderException { boolean updated = false; *************** *** 592,595 **** --- 621,626 ---- if (modsInStudies) if (updateModalitiesInStudy(pk, numI)) updated = true; + if ( hidden ) + if ( updateHidden(pk)) updated = true; return updated; } *************** *** 614,617 **** --- 645,650 ---- ds.setPrivateCreatorID(PrivateTags.CreatorID); ds.putUL(PrivateTags.StudyPk, getPk().intValue()); + if ( getHiddenSafe() ) + ds.putSS(PrivateTags.HiddenStudy,1); ds.putCS(Tags.ModalitiesInStudy, StringUtils.split( getModalitiesInStudy(), '\\')); Index: PatientBean.java =================================================================== RCS file: /cvsroot/dcm4che/dcm4jboss-ejb/src/java/org/dcm4chex/archive/ejb/entity/PatientBean.java,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** PatientBean.java 30 Aug 2005 14:34:25 -0000 1.28 --- PatientBean.java 29 Sep 2005 15:41:25 -0000 1.29 *************** *** 9,12 **** --- 9,14 ---- package org.dcm4chex.archive.ejb.entity; + import java.util.Iterator; + import javax.ejb.CreateException; import javax.ejb.EntityBean; *************** *** 20,23 **** --- 22,27 ---- import org.dcm4chex.archive.common.PrivateTags; import org.dcm4chex.archive.ejb.interfaces.PatientLocal; + import org.dcm4chex.archive.ejb.interfaces.SeriesLocal; + import org.dcm4chex.archive.ejb.interfaces.StudyLocal; /** *************** *** 52,56 **** * query="" transaction-type="Supports" * @jboss.query signature="java.util.Collection findByNameAndBirthdate(java.lang.String name, java.sql.Timestamp birthdate)" ! * query="SELECT OBJECT(a) FROM Patient AS a WHERE a.patientName = ?1 AND a.patientBirthDate = ?2" * * @author <a href="mailto:gu...@ti...">Gunter Zeilinger</a> --- 56,60 ---- * query="" transaction-type="Supports" * @jboss.query signature="java.util.Collection findByNameAndBirthdate(java.lang.String name, java.sql.Timestamp birthdate)" ! * query="SELECT OBJECT(a) FROM Patient AS a WHERE a.hidden = FALSE AND a.patientName = ?1 AND a.patientBirthDate = ?2" * * @author <a href="mailto:gu...@ti...">Gunter Zeilinger</a> *************** *** 173,176 **** --- 177,191 ---- public abstract void setHidden(boolean hidden); + /** + * @ejb.interface-method + */ + public void markDeleted(boolean deleted) { + Iterator iter = getStudies().iterator(); + while( iter.hasNext() ) { + ( (StudyLocal) iter.next() ).markDeleted( deleted ); + } + setHidden(deleted); + } + /** * Patient DICOM Attributes *************** *** 270,273 **** --- 285,295 ---- public void ejbRemove() throws RemoveException { log.info("Deleting " + prompt()); + // we have to delete studies explicitly here due to an foreign key constrain error + // if an mpps key is set in one of the series. + for ( Iterator iter = getStudies().iterator() ; iter.hasNext() ; ) { + StudyLocal study = (StudyLocal) iter.next(); + iter.remove(); + study.remove(); + } } *************** *** 282,285 **** --- 304,309 ---- ds.setPrivateCreatorID(PrivateTags.CreatorID); ds.putUL(PrivateTags.PatientPk, getPk().intValue()); + if ( getHiddenSafe() ) + ds.putSS(PrivateTags.HiddenPatient,1); } return ds; *************** *** 324,326 **** --- 348,367 ---- + getPatientName() + "]"; } + + /** + * @ejb.interface-method + */ + public boolean updateDerivedFields() { + if (getHiddenSafe()) {//we have only to check if this patient can be really marked deleted (only if all childs are marked deleted)! + Iterator iter = getStudies().iterator(); + while ( iter.hasNext() ) { + if ( !((StudyLocal) iter.next()).getHiddenSafe() ) { + setHidden(false); + return true; + } + } + } + return false; + } + } \ No newline at end of file |