blob: 7cad51596c92d1094dfac8b9fdc43ac47dfa4d30 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* $Id$ */
package org.apache.fop.afp;
import java.awt.Dimension;
import org.apache.fop.afp.AFPResourceLevel.ResourceType;
/**
* The level at which a resource is to reside in the AFP output
*/
public class AFPResourceInfo {
/** the general default resource level */
public static final AFPResourceLevel DEFAULT_LEVEL
= new AFPResourceLevel(ResourceType.PRINT_FILE);
/** the URI of this resource */
private String uri;
/**
* the image dimension in page coordinates (non-null only when page segments are
* generated because the cannot be scaled for painting).
*/
private Dimension imageDimension;
/** the reference name of this resource */
private String name;
/** the resource level of this resource */
private AFPResourceLevel level = DEFAULT_LEVEL;
/** true when the resource level was changed */
private boolean levelChanged;
/**
* Sets the data object URI.
*
* @param uri the data object URI
*/
public void setUri(String uri) {
this.uri = uri;
}
/**
* Returns the URI of this data object.
*
* @return the URI of this data object
*/
public String getUri() {
return uri;
}
/**
* Sets an optional image dimension (in page coordinates). This is only used if
* a page segment is created for this resource as page segments cannot be rescaled
* for painting.
* @param dim the image dimension (in page coordinates)
*/
public void setImageDimension(Dimension dim) {
this.imageDimension = dim;
}
/**
* Returns an optional image dimension (in page coordinates). This is only used if
* a page segment is created for this resource as page segments cannot be rescaled
* for painting.
* @return the image dimension (or null if not applicable)
*/
public Dimension getImageDimension() {
return this.imageDimension;
}
/**
* Sets the resource reference name
*
* @param resourceName the resource reference name
*/
public void setName(String resourceName) {
this.name = resourceName;
}
/**
* Returns the resource reference name
*
* @return the resource reference name
*/
public String getName() {
return this.name;
}
/**
* Returns the resource level
*
* @return the resource level
*/
public AFPResourceLevel getLevel() {
if (level == null) {
return DEFAULT_LEVEL;
}
return this.level;
}
/**
* Sets the resource level
*
* @param resourceLevel the resource level
*/
public void setLevel(AFPResourceLevel resourceLevel) {
this.level = resourceLevel;
levelChanged = true;
}
/**
* Returns true when the resource level was set
*
* @return true when the resource level was set
*/
public boolean levelChanged() {
return levelChanged;
}
/** {@inheritDoc} */
public String toString() {
return "AFPResourceInfo{uri=" + uri
+ (imageDimension != null
? ", " + imageDimension.width + "x" + imageDimension.height : "")
+ (name != null ? ", name=" + name : "")
+ (level != null ? ", level=" + level : "")
+ "}";
}
/** {@inheritDoc} */
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if ((obj == null) || !(obj instanceof AFPResourceInfo)) {
return false;
}
AFPResourceInfo ri = (AFPResourceInfo)obj;
return (uri == ri.uri || uri != null && uri.equals(ri.uri))
&& (imageDimension == ri.imageDimension
|| (imageDimension != null && imageDimension.equals(ri.imageDimension)))
&& (name == ri.name || name != null && name.equals(ri.name))
&& (level == ri.level || level != null && level.equals(ri.level));
}
/** {@inheritDoc} */
public int hashCode() {
int hash = 7;
hash = 31 * hash + (null == uri ? 0 : uri.hashCode());
hash = 31 * hash + (null == imageDimension ? 0 : imageDimension.hashCode());
hash = 31 * hash + (null == name ? 0 : name.hashCode());
hash = 31 * hash + (null == level ? 0 : level.hashCode());
return hash;
}
}