Package org.geotools.metadata

Source Code of org.geotools.metadata.MetadataExamples

package org.geotools.metadata;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.ResourceBundle;

import org.geotools.metadata.iso.citation.CitationImpl;
import org.geotools.metadata.iso.citation.Citations;
import org.geotools.metadata.iso.citation.ResponsiblePartyImpl;
import org.geotools.metadata.iso.citation.TelephoneImpl;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.geotools.text.Text;
import org.geotools.util.GrowableInternationalString;
import org.geotools.util.NumberRange;
import org.geotools.util.Range;
import org.geotools.util.ResourceInternationalString;
import org.geotools.util.SimpleInternationalString;
import org.geotools.util.Utilities;
import org.opengis.metadata.citation.Citation;
import org.opengis.metadata.citation.ResponsibleParty;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.util.InternationalString;

public class MetadataExamples {

public static void main(String args[]) {
    MetadataExamples examples = new MetadataExamples();
   
    examples.exampleRange();
    examples.referenceDocument(Citations.EPSG);
    examples.referenceDocument(Citations.OGC);
    examples.referenceDocument(Citations.ORACLE);
    examples.exampleCitation(examples);
    examples.telephone();
    examples.wkt();
}

private void exampleUtilities() {
    String string1 = null;
    String string2 = null;
    Object object = null;
    Object value = null;
    int seed = 0;
   
    // exampleUtilities start
   
    // equals provides a null safe equals check
    Utilities.equals(string1, string2); // null safe equals check
    Utilities.equals(null, "Hello"); // false
    Utilities.equals(null, null); // true!
   
    // deepEquals will check the contents of arrays
    Utilities.deepEquals(new double[] { 1.0 }, new double[] { 1.0 });
   
    // deepToString will print out objects and arrays
    Utilities.deepToString(new double[] { 1.0, Math.PI, Math.E });
   
    // when implementing your own object the following are handy
    Utilities.hash(value, seed);
    Utilities.equals(value, object);
    Utilities.ensureNonNull("parameter", object);
    // exampleUtilities end
}

private void exampleCitation(MetadataExamples examples) {
    CitationImpl citation = new CitationImpl();
    citation.setEditionDate(new Date()); // today
   
    Collection<ResponsibleParty> parties = Collections.singleton(ResponsiblePartyImpl.GEOTOOLS);
    citation.setCitedResponsibleParties(parties);
   
    referenceDocument(Citations.ORACLE);
}

private void referenceDocument(Citation citation) {
    System.out.println(citation.getTitle());
    System.out.println(citation.getTitle().toString(Locale.FRENCH));
   
    System.out.println(citation.getIdentifiers());
    System.out.println(citation.getAlternateTitles());
}

private void telephone() {
    TelephoneImpl phone = new TelephoneImpl();
    phone.setVoices(Collections.singleton("555-1234"));
    phone.setFacsimiles(Collections.singleton("555-2FAX"));
    System.out.println(phone);
}

private void wkt() {
    CoordinateReferenceSystem crs = DefaultGeographicCRS.WGS84;
    System.out.println(crs.toWKT());
}

private void exampleRange() {
    // exampleRange start
    // simple range of one value
    Range<Double> zero = new Range<Double>(Double.class, 0.0);
   
    System.out.println(zero); // [0.0, 0.0]
   
    // range include two values
    Range<Double> from1to5 = new Range<Double>(Double.class, 1.0, 5.0);
    System.out.println(from1to5); // [1.0, 5.0]
   
    // range from one value up to a limit
    Range<Double> from1upto10 = new Range<Double>(Double.class, 1.0, true, 10.0, false);
    System.out.println(from1upto10); // [1.0, 10.0)
   
    // range between two values
    Range<Double> between6and8 = new Range<Double>(Double.class, 6.0, false, 8.0, false);
    System.out.println(between6and8); // (6.0, 8.0)
   
    // range details
    from1to5.getMinValue();
    from1to5.isMinIncluded();
    from1to5.getMaxValue();
    from1to5.isMaxIncluded();
   
    // range operations
    from1upto10.subtract(between6and8); // returns two ranges
    from1upto10.subtract(from1to5); // returns one range
   
    from1to5.union(between6and8); // returns [1.0,8.0)
   
    // range check
    from1to5.contains(3.0); // true
    from1upto10.contains(between6and8); // true
   
    // exampleRange end
}

private void exampleRangeComparable() {
    // exampleRangeComparable start
    Range<Date> today = new Range<Date>(Date.class, new Date());
    // exampleRangeComparable end
}

private void exampleNumberRange() {
    // exampleNumberRange start
   
    NumberRange<Double> positive = NumberRange.create(0.0, Double.MAX_VALUE);
    NumberRange<Double> negative = NumberRange.create(0.0, false, Double.MIN_VALUE, true);
   
    NumberRange<Integer> decimal = NumberRange.create(1, 10);
    positive.contains(decimal);
   
    positive.contains((Number) 3.0); // test double
    positive.contains((Number) 3); // test integer
   
    // exampleNumberRange end
}

//
// Text
//

private void examleText() throws Exception {
    // exampleText start
   
    InternationalString greeting;
   
    // simple text place holder
    greeting = Text.text("hello world");
   
    // translated text for an internationalized application
    // useful as message.properties, message_fr.properties etc can be translated
    // outside of your application
    greeting = Text.text("greeting", "message.properties");
   
    // the next method is good for quickly doing things as a developer
    Map<String,String> translations = new HashMap<String,String>();
    translations.put("greeting", "Hello World");
    translations.put( "greeting_it", "ciao mondo");
   
    greeting = Text.text("greeting", translations );
   
    // you can actually use the same map to configure several international strings
    // (each string will only pick up the entries with a matching key)
    //
    // With that in mind we make a special effort to allow you to use properties
    Properties properties = new Properties();
    properties.load( new FileInputStream("message.properties") );
   
    InternationalString title = Text.text( "title", properties );
    InternationalString description = Text.text( "description", properties );
   
    // exampleText end
}

private void exampleResourceInternationalString() {
    // exampleResourceInternationalString start
    ResourceInternationalString greeting = new ResourceInternationalString("message.properties",
            "greeting");
   
    System.out.println(greeting); // will output best match to current Locale
    System.out.println(greeting.toString(Locale.CANADA_FRENCH)); // should output best match
   
    // Note the "messages.properties" above is used with Java ResourceBundle
    // In a manner similar to this
    ResourceBundle.getBundle("message.properties", Locale.getDefault()).getString("greeting");
    // exampleResourceInternationalString end
}

private void exampleSimpleInternationalStirng() {
    // exampleSimpleInternationalStirng start
    SimpleInternationalString greeting = new SimpleInternationalString("Hello World");
   
    System.out.println(greeting); // will output best match to current
    System.out.println(greeting.toString(Locale.FRENCH)); // but since there is only one...
    // exampleSimpleInternationalStirng end
}

private void exampleGrowableInternationalString() {
    // exampleGrowableInternationalString start
    GrowableInternationalString greeting = new GrowableInternationalString();
   
    // Make use of Locale when adding translations
    greeting.add(Locale.ENGLISH, "Hello World");
    greeting.add(Locale.FRENCH, "Bonjour tout le monde");
    greeting.add("fr", "greeting", "");
   
    System.out.println(greeting); // will output best match to current Locale
    System.out.println(greeting.toString(Locale.CANADA_FRENCH)); // should output best match
   
    // You can also use strings to avoid creating Locale objects right away
    // The method references a "key" which is handy when processing property files
    greeting.add("key_en", "key", "Hello World");
    greeting.add("key_fr", "key", "Bonjour tot le monde");
   
    // You can also quickly create an GrowableInternationalString and add to it later
    GrowableInternationalString cheerfulGreeting = new GrowableInternationalString("G'Day");
    cheerfulGreeting.add(Locale.UK, "Welcome");
    cheerfulGreeting.add(Locale.US, "Hello");
    // exampleGrowableInternationalString end
}
}
TOP

Related Classes of org.geotools.metadata.MetadataExamples

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.