001: /*
002: * Copyright (c) 2004 JETA Software, Inc. All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without modification,
005: * are permitted provided that the following conditions are met:
006: *
007: * o Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * o Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * o Neither the name of JETA Software nor the names of its contributors may
015: * be used to endorse or promote products derived from this software without
016: * specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
021: * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
022: * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
023: * INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
024: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
025: * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
026: * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
027: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
028: */
029:
030: package com.jeta.forms.store.memento;
031:
032: import java.io.IOException;
033:
034: import com.jeta.forms.store.AbstractJETAPersistable;
035: import com.jeta.forms.store.JETAObjectInput;
036: import com.jeta.forms.store.JETAObjectOutput;
037:
038: /**
039: * This class is used to provide a version stamp to a forms file. This is not
040: * the version of the forms designer product. Rather, this allows the runtime to
041: * check the form file version. If this is an older runtime that is trying to
042: * load a file stored with a more recent, incompatible runtime, an error message
043: * can be displayed to the user. Incompatible changes should be marked by an
044: * increase in the major version number. Changes to the minor and sub versions
045: * should be reserved for bug fixes or changes that can be loaded and safely
046: * ignored by older runtimes.
047: *
048: * @deprecated. Use FormsVersion2
049: * @author Jeff Tassin
050: */
051: public class FormsVersion2 extends AbstractJETAPersistable implements
052: Comparable {
053:
054: static final long serialVersionUID = -1159397996359121427L;
055:
056: /**
057: * The version of this class.
058: */
059: public static final int VERSION = 1;
060:
061: /**
062: * The version of the forms runtime file. Update these values when the forms
063: * runtime is changed.
064: */
065: private int m_major = 2;
066:
067: private int m_minor = 0;
068:
069: private int m_sub = 0;
070:
071: /**
072: * Comparable implementation
073: */
074: public int compareTo(Object o) {
075: if (o instanceof FormsVersion2) {
076: FormsVersion2 version = (FormsVersion2) o;
077: if (m_major > version.m_major)
078: return 1;
079: else if (m_major < version.m_major)
080: return -1;
081: else {
082: /** major versions are the same, check minor */
083: if (m_minor > version.m_minor)
084: return 1;
085: else if (m_minor < version.m_minor)
086: return -1;
087: else {
088: /** major and minor versions are the same, check sub */
089: if (m_sub > version.m_sub)
090: return 1;
091: else if (m_sub < version.m_sub)
092: return -1;
093: else
094: return 0; // versions are equal
095: }
096: }
097: } else {
098: return -1;
099: }
100:
101: }
102:
103: /**
104: * Externalizable Implementation
105: */
106: public void read(JETAObjectInput in) throws ClassNotFoundException,
107: IOException {
108: int classversion = in.readVersion();
109: m_major = in.readInt("major");
110: m_minor = in.readInt("minor");
111: m_sub = in.readInt("sub");
112: }
113:
114: /**
115: * Externalizable Implementation
116: */
117: public void write(JETAObjectOutput out) throws IOException {
118: out.writeVersion(VERSION);
119: out.writeInt("major", m_major);
120: out.writeInt("minor", m_minor);
121: out.writeInt("sub", m_sub);
122: }
123:
124: public String toString() {
125: return m_major + "." + m_minor + "." + m_sub;
126: }
127: }
|