public class SpecimenTypeDesignationDTO {
SpecimenTypeDesignation std;
+ private DerivedUnit replacedTypeSpecimen;
/**
* @return the std
return std;
}
+ public DerivedUnit replacedTypeSpecimen(){
+ return replacedTypeSpecimen;
+ }
+
/**
* Creates an new new instance of SpecimenTypeDesignationDTO which is backed up
* by an newly instantiated <code>SpecimenTypeDesignation.typeSpecimen.derivedFrom.type</code> object graph.
public void setKindOfUnit(DefinedTerm kindOfUnit) throws DerivedUnitConversionException{
std.getTypeSpecimen().setKindOfUnit(kindOfUnit);
+ DerivedUnit typeSpecimen = HibernateProxyHelper.deproxy(std.getTypeSpecimen());
Class<? extends DerivedUnit> requiredSpecimenType = specimenTypeFor(kindOfUnit);
+ Class<? extends DerivedUnit> currentType = typeSpecimen.getClass();
- if(!requiredSpecimenType.equals(std.getTypeSpecimen())){
-
- DerivedUnit convertedSpecimen;
-
+ if(!requiredSpecimenType.equals(currentType)){
+ SpecimenOrObservationType convertToType = specimenOrObservationTypeFor(kindOfUnit);
if(requiredSpecimenType.equals(MediaSpecimen.class)){
- DerivedUnitConverter<MediaSpecimen> converter = new DerivedUnitConverter<MediaSpecimen> (std.getTypeSpecimen());
- convertedSpecimen = converter.convertTo((Class<MediaSpecimen>)requiredSpecimenType, specimenOrObservationTypeFor(kindOfUnit));
+ DerivedUnitConverter<MediaSpecimen> converter = new DerivedUnitConverter<MediaSpecimen>(std);
+ std = converter.convertTo((Class<MediaSpecimen>)requiredSpecimenType, convertToType);
} else {
- DerivedUnitConverter<DerivedUnit> converter = new DerivedUnitConverter<DerivedUnit> (std.getTypeSpecimen());
- convertedSpecimen = converter.convertTo((Class<DerivedUnit>)requiredSpecimenType, specimenOrObservationTypeFor(kindOfUnit));
+ if(currentType == MediaSpecimen.class){
+ MediaSpecimen mediaSpecimen = (MediaSpecimen)typeSpecimen;
+ // set null to allow conversion
+ mediaSpecimen.setMediaSpecimen(null);
+ }
+ DerivedUnitConverter<DerivedUnit> converter = new DerivedUnitConverter<DerivedUnit>(std);
+ std = converter.convertTo((Class<DerivedUnit>)requiredSpecimenType, convertToType);
+ }
+ if(typeSpecimen.getId() != 0){
+ replacedTypeSpecimen = typeSpecimen;
}
- std.setTypeSpecimen(convertedSpecimen);
}
}
+ /**
+ *
+ * @return the total count of typeDesignations associated with the type specimen
+ */
+ public int getAssociatedTypeDesignationCount() {
+ return std.getTypeSpecimen().getSpecimenTypeDesignations().size();
+ }
+
/**
* See constructor doc.
std.getTypeSpecimen().setAccessionNumber(accessionNumber);
}
+ public URI getPreferredStableUri(){
+ return std.getTypeSpecimen().getPreferredStableUri();
+ }
+
+ public void setPreferredStableUri(URI uri){
+ std.getTypeSpecimen().setPreferredStableUri(uri);
+ }
+
public URI getMediaUri(){
if(checkMediaSpecimen()){
MediaRepresentationPart part = findMediaRepresentationPart();
IdentifiableSource source ;
Media media = findMediaSpecimen().getMediaSpecimen();
if(media == null){
+ media = Media.NewInstance();
findMediaSpecimen().setMediaSpecimen(Media.NewInstance());
}
if(CollectionUtils.isEmpty(media.getSources())){
* @return
*/
private MediaSpecimen findMediaSpecimen() {
- DerivedUnit sp = std.getTypeSpecimen();
+ DerivedUnit sp = HibernateProxyHelper.deproxy(std.getTypeSpecimen());
if(MediaSpecimen.class.isAssignableFrom(sp.getClass())){
return (MediaSpecimen) sp;
}