package org.dcm4chee.archive.conf;
import org.dcm4che3.conf.core.api.ConfigurableClass;
import org.dcm4che3.conf.core.api.ConfigurableProperty;
import org.dcm4che3.conf.core.api.LDAP;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Created by Umberto Cappellini on 6/8/15.
*/
@ConfigurableClass
public class PrivateDerivedFields implements Iterable<PrivateTag>, Serializable {
private static final long serialVersionUID = 7463738930681558356L;
@LDAP(noContainerNode = true)
@ConfigurableProperty
private List<PrivateTag> list = new ArrayList<PrivateTag>();
public enum NAMES {
StudyUpdateTimeDerivedField,
StudyNumberVisibleImagesDerivedField,
SeriesNumberVisibleImagesDerivedField,
SeriesUpdateTimeDerivedField;
}
public void add(PrivateTag tag) {
if (findByCommonName(NAMES.valueOf(tag.getCommonName())) != null)
throw new IllegalStateException("PrivateTag with cn: '"
+ tag.getCommonName() + "' already exists");
list.add(tag);
}
public List<PrivateTag> getList() {
return list;
}
public void setList(List<PrivateTag> list) {
this.list.clear();
for (PrivateTag tag : list)
add(tag);
}
public void add(PrivateDerivedFields tags) {
for (PrivateTag tag : tags)
add(tag);
}
public boolean remove(PrivateTag tag) {
return list.remove(tag);
}
public void clear() {
list.clear();
}
public PrivateTag findByCommonName(NAMES commonName) {
for (PrivateTag tag : list)
if (commonName.name().equals(tag.getCommonName()))
return tag;
return null;
}
public PrivateTag findStudyUpdateTimeTag() {
return findByCommonName(NAMES.StudyUpdateTimeDerivedField);
}
public PrivateTag findStudyNumberOfVisibleInstancesTag() {
return findByCommonName(NAMES.StudyNumberVisibleImagesDerivedField);
}
public PrivateTag findSeriesUpdateTimeTag() {
return findByCommonName(NAMES.SeriesUpdateTimeDerivedField);
}
public PrivateTag findSeriesNumberOfVisibleInstancesTag() {
return findByCommonName(NAMES.SeriesNumberVisibleImagesDerivedField);
}
@Override
public Iterator<PrivateTag> iterator() {
return list.iterator();
}
}