001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: /* $Id: Property.java 474225 2006-11-13 10:08:19Z jeremias $ */
019:
020: package org.apache.fop.fo.properties;
021:
022: import java.util.List;
023: import java.awt.Color;
024:
025: import org.apache.commons.logging.Log;
026: import org.apache.commons.logging.LogFactory;
027:
028: import org.apache.fop.apps.FOUserAgent;
029: import org.apache.fop.datatypes.Length;
030: import org.apache.fop.datatypes.Numeric;
031: import org.apache.fop.fo.Constants;
032:
033: /**
034: * Base class for all property objects
035: */
036: public class Property {
037:
038: /** Logger for all property classes */
039: protected static Log log = LogFactory.getLog(PropertyMaker.class);
040:
041: /**
042: * The original specified value for properties which inherit
043: * specified values.
044: */
045: private String specVal;
046:
047: /**
048: * Set the original value specified for the property attribute.
049: * @param value The specified value.
050: */
051: public void setSpecifiedValue(String value) {
052: this .specVal = value;
053: }
054:
055: /**
056: * Return the original value specified for the property attribute.
057: * @return The specified value as a String.
058: */
059: public String getSpecifiedValue() {
060: return specVal;
061: }
062:
063: /*
064: * This section contains accessor functions for all possible Property datatypes
065: */
066:
067: /**
068: * This method expects to be overridden by subclasses
069: * @return Length property value
070: */
071: public Length getLength() {
072: return null;
073: }
074:
075: /**
076: * This method expects to be overridden by subclasses
077: * @param foUserAgent FOP user agent
078: * @return ColorType property value
079: */
080: public Color getColor(FOUserAgent foUserAgent) {
081: return null;
082: }
083:
084: /**
085: * This method expects to be overridden by subclasses
086: * @return CondLength property value
087: */
088: public CondLengthProperty getCondLength() {
089: return null;
090: }
091:
092: /**
093: * This method expects to be overridden by subclasses
094: * @return LenghtRange property value
095: */
096: public LengthRangeProperty getLengthRange() {
097: return null;
098: }
099:
100: /**
101: * This method expects to be overridden by subclasses
102: * @return LengthPair property value
103: */
104: public LengthPairProperty getLengthPair() {
105: return null;
106: }
107:
108: /**
109: * This method expects to be overridden by subclasses
110: * @return Space property value
111: */
112: public SpaceProperty getSpace() {
113: return null;
114: }
115:
116: /**
117: * This method expects to be overridden by subclasses
118: * @return Keep property value
119: */
120: public KeepProperty getKeep() {
121: return null;
122: }
123:
124: /**
125: * This method expects to be overridden by subclasses
126: * @return integer equivalent of enumerated property value
127: */
128: public int getEnum() {
129: return 0;
130: }
131:
132: /** @return true if the property is an enum and has value 'auto' */
133: public boolean isAuto() {
134: return (getEnum() == Constants.EN_AUTO);
135: }
136:
137: /**
138: * This method expects to be overridden by subclasses
139: * @return char property value
140: */
141: public char getCharacter() {
142: return 0;
143: }
144:
145: /**
146: * This method expects to be overridden by subclasses
147: * @return collection of other property (sub-property) objects
148: */
149: public List getList() {
150: return null;
151: }
152:
153: /**
154: * This method expects to be overridden by subclasses
155: * @return Number property value
156: */
157: public Number getNumber() {
158: return null;
159: }
160:
161: /**
162: * This method expects to be overridden by subclasses
163: * @return Numeric property value
164: */
165: public Numeric getNumeric() {
166: return null;
167: }
168:
169: /**
170: * This method expects to be overridden by subclasses
171: * @return NCname property value
172: */
173: public String getNCname() {
174: return null;
175: }
176:
177: /**
178: * This method expects to be overridden by subclasses
179: * @return Object property value
180: */
181: public Object getObject() {
182: return null;
183: }
184:
185: /**
186: * This method expects to be overridden by subclasses.
187: * @return String property value
188: */
189: public String getString() {
190: return null;
191: }
192:
193: /** @see java.lang.Object#toString() */
194: public String toString() {
195: Object obj = getObject();
196: if (obj != this) {
197: return obj.toString();
198: }
199: return null;
200: }
201: }
|