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: package org.apache.jetspeed.cluster;
018:
019: import java.io.IOException;
020: import java.io.ObjectInputStream;
021: import java.io.ObjectOutputStream;
022: import java.io.Serializable;
023: import java.text.DateFormat;
024: import java.util.Date;
025:
026: import org.apache.pluto.om.common.ObjectID;
027:
028: /**
029: * Node Information
030: *
031: * @author <a href="mailto:hajo@bluesunrise.com">Hajo Birthelmer</a>
032: * @version
033: */
034: public class NodeInformationImpl implements NodeInformation,
035: Serializable {
036: static final long serialVersionUID = -598265530537353219L;
037:
038: private Long id;
039: private String contextName;
040: private Date lastDeployDate = null;
041: private static final int CompressVersion = 1;
042:
043: /**
044: * default class construtor required for bean management
045: *
046: */
047: public NodeInformationImpl() {
048: }
049:
050: /**
051: * extensible serialization routine - indicates the version written to allow for later structural updates
052: *
053: */
054: private void writeObject(ObjectOutputStream out) throws IOException {
055: out.writeByte(CompressVersion);
056: out.writeLong(id.longValue());
057: out.writeUTF(contextName);
058: if (lastDeployDate == null)
059: out.writeByte(0);
060: else {
061: out.writeByte(1);
062: out.writeLong(lastDeployDate.getTime());
063: }
064: }
065:
066: /**
067: * extensible serialization routine
068: * using the version byte code can identify older versions and handle updates correctly
069: *
070: */
071: private void readObject(ObjectInputStream in) throws IOException,
072: ClassNotFoundException {
073: int version = in.readByte();
074: // do changes here if version dependant
075:
076: id = new Long(in.readLong());
077: contextName = in.readUTF();
078: int dateSet = in.readByte();
079:
080: if (dateSet == 1)
081: lastDeployDate = new Date(in.readLong());
082: else
083: lastDeployDate = null;
084: }
085:
086: public boolean equals(Object object) {
087: if (object == this )
088: return true;
089: if (!(object instanceof NodeInformation))
090: return false;
091: return equals((NodeInformation) object);
092: }
093:
094: public int compareTo(Object object) {
095: if (object == null)
096: return 1;
097: if (object == this )
098: return 0;
099: if (!(object instanceof NodeInformation))
100: return 1;
101: return compareTo((NodeInformation) object);
102: }
103:
104: public final boolean equals(NodeInformation object) {
105: if (object == null)
106: return false;
107: return object.getContextName().equalsIgnoreCase(contextName);
108: }
109:
110: public final int compareTo(NodeInformation object) {
111: return getContextName().compareToIgnoreCase(contextName);
112: }
113:
114: public String toString() {
115: StringBuffer buffer = new StringBuffer();
116: buffer.append("id= " + this .id.longValue());
117: buffer.append("; contextName= " + this .getContextName());
118: buffer.append("; lastDeployDate= " + this .getContextName());
119: if (this .lastDeployDate != null) {
120: DateFormat format = DateFormat
121: .getTimeInstance(DateFormat.SHORT);
122: try {
123: buffer.append(format.format(this .lastDeployDate));
124: } catch (Exception e) {
125: buffer.append("<invalidDate>");
126: }
127: } else
128: buffer.append("<empty>");
129:
130: return buffer.toString();
131: }
132:
133: public String getContextName() {
134: return contextName;
135: }
136:
137: public void setContextName(String contextName) {
138: this .contextName = contextName;
139: }
140:
141: public Long getId() {
142: return id;
143: }
144:
145: public void setId(ObjectID id) {
146: this .id = new Long(id.toString());
147: }
148:
149: public void setId(Long id) {
150: this .id = id;
151: }
152:
153: public void setId(long id) {
154: this .id = new Long(id);
155: }
156:
157: public Date getLastDeployDate() {
158: return lastDeployDate;
159: }
160:
161: public void setLastDeployDate(Date lastDeployDate) {
162: this.lastDeployDate = lastDeployDate;
163: }
164:
165: }
|