/*
Copyright (C) 2001, 2006 United States Government as represented by
the Administrator of the National Aeronautics and Space Administration.
All Rights Reserved.
*/
package gov.nasa.worldwind.layers.placename;
import gov.nasa.worldwind.util.Logging;
import java.util.*;
/**
* @author Paul Collins
* @version $Id: PlaceNameServiceSet.java 5143 2008-04-23 15:29:56Z jparsons $
*/
public class PlaceNameServiceSet
{
private final List<PlaceNameService> serviceList = new LinkedList<PlaceNameService>();
private long expiryTime = 0;
public PlaceNameServiceSet()
{
}
/**
* @param placeNameService
* @param replace
* @return
* @throws IllegalArgumentException if <code>placeNameService</code> is null
*/
public boolean addService(PlaceNameService placeNameService, boolean replace)
{
if (placeNameService == null)
{
String message = Logging.getMessage("nullValue.PlaceNameServiceIsNull");
Logging.logger().severe(message);
throw new IllegalArgumentException(message);
}
for (int i = 0; i < this.serviceList.size(); i++)
{
final PlaceNameService other = this.serviceList.get(i);
if (placeNameService.getService().equals(other.getService()) && placeNameService.getDataset().equals(
other.getDataset()))
{
if (replace)
{
this.serviceList.set(i, placeNameService);
return true;
}
else
{
return false;
}
}
}
this.serviceList.add(placeNameService);
return true;
}
public final PlaceNameServiceSet deepCopy()
{
PlaceNameServiceSet copy = new PlaceNameServiceSet();
// Creates a deep copy of this.serviceList in copy.serviceList.
for (int i = 0; i < this.serviceList.size(); i++)
{
copy.serviceList.add(i, this.serviceList.get(i).deepCopy());
}
copy.expiryTime = this.expiryTime;
return copy;
}
public final int getServiceCount()
{
return this.serviceList.size();
}
public final PlaceNameService getService(int index)
{
return this.serviceList.get(index);
}
public final long getExpiryTime()
{
return this.expiryTime;
}
public final void setExpiryTime(long expiryTime)
{
this.expiryTime = expiryTime;
}
public List<PlaceNameService> getServices()
{
return serviceList;
}
public PlaceNameService getService(String name)
{
for (int i = 0; i < this.serviceList.size(); i++)
{
if (this.serviceList.get(i).getDataset().equalsIgnoreCase(name))
return this.serviceList.get(i);
}
return null;
}
}