Package skunkworks.catalog

Source Code of skunkworks.catalog.SkunkCatalog

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2005-2008, Open Source Geospatial Foundation (OSGeo)
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation;
*    version 2.1 of the License.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*/
package skunkworks.catalog;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.geotools.gtcatalog.Catalog;
import org.geotools.gtcatalog.CatalogInfo;
import org.geotools.gtcatalog.ResolveChangeListener;
import org.geotools.gtcatalog.Service;
import org.geotools.util.ProgressListener;

import com.vividsolutions.jts.geom.Envelope;

public class SkunkCatalog extends Catalog {

  List services = new ArrayList();
  CatalogInfo info;
 
  public void add(Service service) throws UnsupportedOperationException {
    services.add(service);
   
  }

  public void remove(Service service) throws UnsupportedOperationException {
    services.remove(service);
   
  }

  public void replace(URI id, Service service) throws UnsupportedOperationException {
    if (id == null)
      return;
   
    for (int i = 0; i < services.size(); i++) {
      Service replacee = (Service)services.get(i);
      if (id.equals(replacee.getIdentifier())) {
        services.set(i,service);
      }
    }
  }

  public Object resolve(Class adaptee, ProgressListener monitor) throws IOException {
    if (adaptee == null)
      return null;
   
    if (adaptee.isAssignableFrom(CatalogInfo.class)) {
      if (info == null) {
        synchronized (this) {
          if (info == null) {
            try {
              info = new CatalogInfo(
                "skunk","Skunkworks",
                new URI("http://www.skunkworks.com"),new String[]{}
              );
            }
            catch (URISyntaxException e) {}
          }
        }
      }
      return info;
    }
    if (adaptee.isAssignableFrom(List.class)) {
      return services;
    }
   
    return null;
  }

  public List find(URI id, ProgressListener monitor) {
    return findService(id,monitor);
  }

  public List findService(URI query, ProgressListener monitor) {
    if (query == null)
      return Collections.EMPTY_LIST;
   
    ArrayList matched = new ArrayList();
    for (int i = 0; i < services.size(); i++) {
      Service service = (Service)services.get(i);
      if (query.equals(service.getIdentifier())) {
        matched.add(service);
      }
    }
   
    return matched;
  }

  public List search(String pattern, Envelope bbox, ProgressListener monitor) throws IOException {
    return Collections.EMPTY_LIST;
  }

  public void addCatalogListener(ResolveChangeListener listener) {
  }

  public void removeCatalogListener(ResolveChangeListener listener) {
  }

  public boolean canResolve(Class adaptee) {
    if (adaptee == null)
      return false;
   
    return adaptee.isAssignableFrom(List.class) ||
      adaptee.isAssignableFrom(CatalogInfo.class);
  }

  public List members(ProgressListener monitor) throws IOException {
    return services;
  }

  public Status getStatus() {
    return Status.CONNECTED;
  }

  public Throwable getMessage() {
    return null;
  }

  public URI getIdentifier() {
    try {
      return new URI("http://www.skunkworks.com");
    }
    catch (URISyntaxException e) {
      return null;
    }
  }
 
 
}
TOP

Related Classes of skunkworks.catalog.SkunkCatalog

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.