teichmann@5831: package org.dive4elements.river.artifacts.model; felix@1026: ingo@1679: import java.util.ArrayList; sascha@2144: import java.util.Iterator; ingo@1677: import java.util.List; ingo@1677: felix@1026: import org.apache.log4j.Logger; felix@1026: teichmann@5831: import org.dive4elements.artifacts.Artifact; teichmann@5831: import org.dive4elements.artifacts.CallContext; ingo@1677: teichmann@5831: import org.dive4elements.river.artifacts.AnnotationArtifact; felix@1026: teichmann@5831: import org.dive4elements.river.jfree.FLYSAnnotation; teichmann@5831: import org.dive4elements.river.jfree.StickyAxisAnnotation; felix@1026: teichmann@5831: import org.dive4elements.river.model.Annotation; teichmann@5831: import org.dive4elements.river.model.FastAnnotations; sascha@2144: teichmann@5831: import org.dive4elements.artifactdatabase.state.DefaultFacet; teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; teichmann@5831: teichmann@5831: import org.dive4elements.river.utils.FLYSUtils; teichmann@5831: teichmann@5831: import org.dive4elements.river.artifacts.FLYSArtifact; sascha@2144: sascha@2144: felix@1026: /** felix@1077: * Facet to access Annotations (landmarks, POIs) of a river. felix@1026: */ felix@1026: public class AnnotationFacet felix@1026: extends DefaultFacet felix@1026: { felix@1026: /** Logger for this class. */ felix@1026: private static final Logger logger = Logger.getLogger(AnnotationFacet.class); felix@1026: felix@1077: felix@1077: /** felix@1077: * Trivial Constructor. felix@1077: */ sascha@1061: public AnnotationFacet() { sascha@1061: } sascha@1061: felix@1026: felix@1026: /** felix@1026: * Trivial Constructor for a AnnotationFacet. felix@1026: * felix@1026: * @param index Database-Index to use. felix@1026: * @param name Name (~type) of Facet. felix@1026: * @param description Description of Facet. felix@1026: */ felix@1026: public AnnotationFacet(int index, String name, String description) { felix@1026: super(index, name, description); felix@1026: } felix@1026: felix@1026: felix@1026: /** felix@1026: * Get List of Annotations for river from Artifact. felix@1026: * felix@1026: * @param artifact (Annotation-)Artifact to query for list of Annotations. felix@1026: * @param context Ignored. felix@1026: */ felix@1026: @Override felix@1026: public Object getData(Artifact artifact, CallContext context) { felix@4010: felix@4010: // TODO issue880: Make annotations available _per type_ felix@1077: AnnotationArtifact annotationArtifact = (AnnotationArtifact) artifact; ingo@1677: sascha@2144: String riverName = FLYSUtils.getRivername((FLYSArtifact)artifact); ingo@1679: sascha@2144: FastAnnotations fas = LocationProvider.getAnnotations(riverName); sascha@2144: felix@4015: String filterName = annotationArtifact.getFilterName(); felix@4015: felix@4015: FastAnnotations.Filter filter = (filterName == null) felix@4015: ? FastAnnotations.IS_POINT felix@4015: : new FastAnnotations.NameFilter(filterName); felix@4015: felix@2162: List xy = felix@2162: new ArrayList(fas.size()); sascha@2144: sascha@2144: for (Iterator iter = felix@4015: fas.filter(filter); iter.hasNext();) { sascha@2144: FastAnnotations.Annotation fa = iter.next(); sascha@2144: ingo@1679: xy.add(new StickyAxisAnnotation( sascha@2144: fa.getPosition(), sascha@2144: (float)fa.getA(), ingo@1679: StickyAxisAnnotation.SimpleAxis.X_AXIS)); ingo@1679: } ingo@1679: ingo@1679: return new FLYSAnnotation(description, xy); felix@1026: } sascha@1061: felix@1077: sascha@1061: @Override sascha@1061: public Facet deepCopy() { sascha@1061: AnnotationFacet copy = new AnnotationFacet(); sascha@1061: copy.set(this); sascha@1061: return copy; sascha@1061: } felix@1026: } felix@1962: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :