/**
* This program 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, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @author Arne Kepp / The Open Planning Project 2009
*
*/
package org.geowebcache.storage;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Map;
import org.geowebcache.grid.GridSet;
import org.geowebcache.io.Resource;
/**
* Represents a specific tile in a {@link GridSet}, identified by xyz. Normally the contents can be
* either an image or a regionated KML tile, the class is format agnostic and carries a {@link Resource}
* object with the data.
*/
public class TileObject extends StorageObject implements Serializable{
/** serialVersionUID */
private static final long serialVersionUID = 2204318806003485110L;
public static final String TYPE = "tile";
Resource blob;
String parameters_id = null;
long[] xyz;
String layer_name;
Map<String, String> parameters;
String gridSetId;
public static TileObject createQueryTileObject(String layerName, long[] xyz, String gridSetId,
String format, Map<String, String> parameters) {
TileObject obj = new TileObject();
obj.layer_name = layerName;
obj.xyz = xyz;
obj.gridSetId = gridSetId;
obj.blob_format = format;
obj.parameters = parameters;
return obj;
}
public static TileObject createCompleteTileObject(String layerName, long[] xyz,
String gridSetId, String format, Map<String, String> parameters, Resource blob) {
TileObject obj = new TileObject();
obj.layer_name = layerName;
obj.xyz = xyz;
obj.gridSetId = gridSetId;
obj.blob_format = format;
obj.parameters = parameters;
if (blob == null) {
obj.blob_size = -1;
} else {
obj.blob_size = (int) blob.getSize();
obj.blob = blob;
}
obj.created = System.currentTimeMillis();
return obj;
}
private TileObject() {
}
public Resource getBlob() {
return blob;
}
public void setBlob(Resource blob) {
if (blob != null) {
this.blob_size = (int) blob.getSize();
} else {
this.blob_size = -1;
}
this.blob = blob;
}
public String getGridSetId() {
return this.gridSetId;
}
/**
* May be null until this object has been handled by the BlobStore
* @return
*/
public String getParametersId() {
return this.parameters_id;
}
/**
* The BlobStore is responsible for setting this based on the value of {@link getParameters}
* @param parameters_id
*/
public void setParametersId(String parameters_id) {
this.parameters_id = parameters_id;
}
public long[] getXYZ() {
return xyz;
}
// public int getSrs() {
// return srs;
// }
public String getLayerName() {
return layer_name;
}
public Map<String, String> getParameters() {
return parameters;
}
public String getType() {
return TYPE;
}
public String toString() {
return "[" + layer_name + "," + gridSetId + ",{" + Arrays.toString(xyz) + "}]";
}
}