/**
* 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, OpenGeo, Copyright 2009
*/
package org.geowebcache.grid;
import java.io.Serializable;
/**
* @author groldan
*
*/
public class Grid implements Serializable, Cloneable {
private static final long serialVersionUID = 1L;
private long numTilesWide;
private long numTilesHigh;
private double resolution;
private double scaleDenom;
private String name;
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Grid))
return false;
Grid other = (Grid) obj;
if (numTilesWide != other.numTilesWide)
return false;
if (numTilesHigh != other.numTilesHigh)
return false;
if (Math.abs(other.resolution - resolution) / Math.abs(other.resolution + resolution) > 0.005)
return false;
return true;
}
public String getName() {
return name;
}
public double getScaleDenominator() {
return scaleDenom;
}
/**
* @return the resolution
*/
public double getResolution() {
return resolution;
}
/**
* @param resolution
* the resolution to set
*/
public void setResolution(double resolution) {
this.resolution = resolution;
}
/**
* @param scaleDenom
* the scaleDenom to set
*/
public void setScaleDenominator(double scaleDenom) {
this.scaleDenom = scaleDenom;
}
/**
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the numTilesWide
*/
public long getNumTilesWide() {
return numTilesWide;
}
/**
* @param numTilesWide
* the numTilesWide to set
*/
public void setNumTilesWide(long numTilesWide) {
this.numTilesWide = numTilesWide;
}
/**
* @return the numTilesHigh
*/
public long getNumTilesHigh() {
return numTilesHigh;
}
/**
* @param numTilesHigh
* the numTilesHigh to set
*/
public void setNumTilesHigh(long numTilesHigh) {
this.numTilesHigh = numTilesHigh;
}
@Override
public String toString() {
return new StringBuilder(getClass().getSimpleName()).append("[name: '").append(name)
.append("', resolution: ").append(resolution).append(", scale denom: ")
.append(scaleDenom).append(", grid extent: ").append(numTilesWide).append(" x ")
.append(numTilesHigh).append("]").toString();
}
@Override
public Grid clone() {
Grid clon;
try {
clon = (Grid) super.clone();
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
return clon;
}
}