Extending tile source info |
Tile source info class defines the storage information, tile est type (UserDefined), specific tile storage type, etc. of the tile.
The extension is as follows:
public class NationalCacheStandardTileSourceInfo extends TileSourceInfo {
...
}
Methods need to be implemented:
| Field/Method | Description |
| public NationalCacheStandardTileSourceInfo(NationalCacheStandardTileSourceInfo
info) |
Implement the copy constructor |
| public TileSourceInfo copy() | Implement copy method |
| public TileSourceType getType() public void setType(TileSourceType type) |
Specify the storage type, which must be set to "UserDefined" |
| public TileType[] getSupportedTileTypes() | Specify the tile type supported by the storage, tile type for map tile must be specified as "image". |
| public int hashCode() public boolean equals(Object obj) |
Implement the hashCode and equals methods |
Method for implementing the copy constructor is as follows:
public NationalCacheStandardTileSourceInfo(NationalCacheStandardTileSourceInfo info) {
super(info);
this.setOutputPath(info.getOutputPath());
}
Implement copy method:
Override
public TileSourceInfo copy() {
return new NationalCacheStandardTileSourceInfo(this);
}
Type for extended tileset should be specified. Tile type for all extended formats should be specified as UserDefined.
public TileSourceType getType() {
return TileSourceType.UserDefined;
}
//Tile type for all extended formats should be specified as UserDefined
public void setType(TileSourceType type) {
if (!(TileSourceType.UserDefined.equals(type))) {
throw new IllegalArgumentException();
}
super.setType(type);
}
Define the storage format type of the extended tile, for example, storage format of map tile (raster format) needs to be specified as "image"
@Override
public TileType[] getSupportedTileTypes() {
return new TileType[] { TileType.Image };
}
public int hashCode() {
HashCodeBuilder builder = new HashCodeBuilder(120000039, 120000041);
String outputPath = getOutputPath();
if (outputPath != null) {
builder.append(Tool.getUniqueAbsoluteFilePath(outputPath));
}
if (getType() != null) {
builder.append(getType());
}
return builder.toHashCode();
}
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (!(obj instanceof NationalCacheStandardTileSourceInfo)) {
return false;
}
NationalCacheStandardTileSourceInfo rhs = (NationalCacheStandardTileSourceInfo) obj;
return new EqualsBuilder().append(this.getOutputPath(), rhs.getOutputPath()).append(this.getType(), rhs.getType()).isEquals();
}
The complete extension example class is as follows:
NationalCacheStandardTileSourceInfo.java
package com.supermap.services.tilesource; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import com.supermap.services.components.commontypes.TileType; import com.supermap.services.util.Tool; public class NationalCacheStandardTileSourceInfo extends TileSourceInfo { private static final long serialVersionUID = 1L; private String outputPath; public NationalCacheStandardTileSourceInfo() { super(); } //Implement copy constructor public NationalCacheStandardTileSourceInfo(NationalCacheStandardTileSourceInfo info) { super(info); this.setOutputPath(info.getOutputPath()); } //Get storage path of the tile public String getOutputPath() { return outputPath; } public void setOutputPath(String outputPath) { this.outputPath = outputPath; } public NationalCacheStandardTileSourceInfo outputPath(String outputPath) { this.setOutputPath(outputPath); return this; } public int hashCode() { HashCodeBuilder builder = new HashCodeBuilder(120000039, 120000041); String outputPath = getOutputPath(); if (outputPath != null) { builder.append(Tool.getUniqueAbsoluteFilePath(outputPath)); } if (getType() != null) { builder.append(getType()); } return builder.toHashCode(); } public boolean equals(Object obj) { if (obj == null) { return false; } if (obj == this) { return true; } if (!(obj instanceof NationalCacheStandardTileSourceInfo)) { return false; } NationalCacheStandardTileSourceInfo rhs = (NationalCacheStandardTileSourceInfo) obj; return new EqualsBuilder().append(this.getOutputPath(), rhs.getOutputPath()).append(this.getType(), rhs.getType()).isEquals(); } @Override public TileSourceInfo copy() { return new NationalCacheStandardTileSourceInfo(this); } /** * Specify the tile format type as Image */ @Override public TileType[] getSupportedTileTypes() { return new TileType[] { TileType.Image }; } /** * Return tile format */ public TileSourceType getType() { return TileSourceType.UserDefined; } /** * Specify tile storage type as UserDefined. Storage type of all extended tile formats should be specified as UserDefined */ public void setType(TileSourceType type) { if (!(TileSourceType.UserDefined.equals(type))) { throw new IllegalArgumentException(); } super.setType(type); } }