@Override public int compare(PlacemarkDescriptor o1, PlacemarkDescriptor o2) { boolean isO1Intended = o1.getCompatibilityFor(featureType) == DecodeQualification.INTENDED; boolean isO2Intended = o2.getCompatibilityFor(featureType) == DecodeQualification.INTENDED; if (isO1Intended && !isO2Intended) { return -1; } else if (!isO1Intended && isO2Intended) { return 1; } else if (isO1Intended && isO2Intended) { if (hasClassProperty(o1) && !hasClassProperty(o2)) { return -1; } else if (!hasClassProperty(o1) && hasClassProperty(o2)) { return 1; } } return 0; } });
ArrayList<PlacemarkDescriptor> list = new ArrayList<PlacemarkDescriptor>(); for (PlacemarkDescriptor placemarkDescriptor : getPlacemarkDescriptors()) { DecodeQualification qualification = placemarkDescriptor.getCompatibilityFor(featureType); if (qualification != DecodeQualification.UNABLE) { if (qualification == DecodeQualification.INTENDED) {
/** * Returns the 'best qualified' placemark descriptors which is compatible with the given feature type. * * @param featureType The feature type. * @return the placemark descriptor */ public PlacemarkDescriptor getPlacemarkDescriptor(SimpleFeatureType featureType) { PlacemarkDescriptor suitablePlacemarkDescriptor = null; PlacemarkDescriptor intendedPlacemarkDescriptor = null; for (PlacemarkDescriptor placemarkDescriptor : getPlacemarkDescriptors()) { DecodeQualification qualification = placemarkDescriptor.getCompatibilityFor(featureType); if (qualification == DecodeQualification.INTENDED) { if (hasClassProperty(placemarkDescriptor)) { return placemarkDescriptor; } else { intendedPlacemarkDescriptor = placemarkDescriptor; } } else if (qualification == DecodeQualification.SUITABLE) { suitablePlacemarkDescriptor = placemarkDescriptor; } } if (intendedPlacemarkDescriptor != null) { return intendedPlacemarkDescriptor; } return suitablePlacemarkDescriptor; }
@Test public void testGetQualification() throws Exception { SimpleFeatureType ft = instance.getBaseFeatureType(); assertEquals(DecodeQualification.SUITABLE, instance.getCompatibilityFor(ft)); ft.getUserData().put("trackPoints", "true"); assertEquals(DecodeQualification.INTENDED, instance.getCompatibilityFor(ft)); final SimpleFeatureType ft2 = createCompatibleFT("org.esa.beam.TrackPoint"); assertEquals(DecodeQualification.SUITABLE, instance.getCompatibilityFor(ft2)); ft2.getUserData().put("trackPoints", "true"); assertEquals(DecodeQualification.INTENDED, instance.getCompatibilityFor(ft2)); // no geometry SimpleFeatureTypeBuilder ftb = new SimpleFeatureTypeBuilder(); ftb.setName("org.esa.beam.Pineapple"); assertEquals(DecodeQualification.UNABLE, instance.getCompatibilityFor(ftb.buildFeatureType())); }
@Test public void testGetQualification() throws Exception { SimpleFeatureType ft = instance.getBaseFeatureType(); assertEquals(DecodeQualification.INTENDED, instance.getCompatibilityFor(ft)); // todo - this is not sufficient: in order to return INTENDED, the given featureType must be equal-to or derived-from DEFAULT_FEATURE_TYPE (nf - 2012-04-23) assertEquals(DecodeQualification.INTENDED, instance.getCompatibilityFor(createCompatibleFT("org.esa.beam.Pin"))); SimpleFeatureTypeBuilder ftb = new SimpleFeatureTypeBuilder(); ftb.setName("org.esa.beam.Pineapple"); assertEquals(DecodeQualification.UNABLE, instance.getCompatibilityFor(ftb.buildFeatureType())); }
@Test public void testGetQualification() throws Exception { SimpleFeatureType ft = instance.getBaseFeatureType(); assertEquals(DecodeQualification.INTENDED, instance.getCompatibilityFor(ft)); // todo - this is not sufficient: in order to return INTENDED, the given featureType must be equal-to or derived-from DEFAULT_FEATURE_TYPE (nf - 2012-04-23) assertEquals(DecodeQualification.INTENDED, instance.getCompatibilityFor(createCompatibleFT("org.esa.beam.GroundControlPoint"))); SimpleFeatureTypeBuilder ftb = new SimpleFeatureTypeBuilder(); ftb.setName("org.esa.beam.GroundControlPot"); assertEquals(DecodeQualification.UNABLE, instance.getCompatibilityFor(ftb.buildFeatureType())); }
assertSame(DecodeQualification.INTENDED, descriptor.getCompatibilityFor(null)); assertSame(first, descriptor); assertSame(DecodeQualification.INTENDED, descriptor.getCompatibilityFor(null)); assertSame(second, descriptor); assertSame(DecodeQualification.SUITABLE, descriptor.getCompatibilityFor(null)); assertTrue(descriptor == third || descriptor == fourth); assertSame(DecodeQualification.SUITABLE, descriptor.getCompatibilityFor(null)); assertTrue(descriptor == third || descriptor == fourth);