Update of /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/internal/data
In directory sc8-pr-cvs1:/tmp/cvs-serv19735/src/java/org/krysalis/version/internal/data
Modified Files:
VersionDataElementSet.java VersionDataElement.java
VersionDataComparator.java VersionData.java
Log Message:
Starting to expand the capabilities beyond the basic format & data elements
Lots more to do to complete this...
Index: VersionDataElementSet.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/internal/data/VersionDataElementSet.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** VersionDataElementSet.java 6 Feb 2003 22:08:27 -0000 1.1
--- VersionDataElementSet.java 7 Mar 2003 20:01:37 -0000 1.2
***************
*** 68,95 ****
| VersionDataElement.ELEMENT_MINOR);
! public static final VersionDataElementSet DEFAULT =
new VersionDataElementSet(
VersionDataElement.ELEMENT_MAJOR
| VersionDataElement.ELEMENT_MINOR
! | VersionDataElement.ELEMENT_POINT);
! public static final VersionDataElementSet LONG =
new VersionDataElementSet(
VersionDataElement.ELEMENT_MAJOR
| VersionDataElement.ELEMENT_MINOR
| VersionDataElement.ELEMENT_MINOR
| VersionDataElement.ELEMENT_POINT
| VersionDataElement.ELEMENT_BUILD_NUMBER);
public VersionDataElementSet(int elementValues) {
if (VersionDataElement.isMajor(elementValues)) {
! add(VersionDataElement.MINOR);
}
! if (VersionDataElement.isMajor(elementValues)) {
add(VersionDataElement.MINOR);
}
}
}
--- 68,172 ----
| VersionDataElement.ELEMENT_MINOR);
! public static final VersionDataElementSet LONG =
new VersionDataElementSet(
VersionDataElement.ELEMENT_MAJOR
| VersionDataElement.ELEMENT_MINOR
! | VersionDataElement.ELEMENT_MINOR
! | VersionDataElement.ELEMENT_POINT
! | VersionDataElement.ELEMENT_RELEASE_LEVEL);
! public static final VersionDataElementSet DEFAULT =
new VersionDataElementSet(
VersionDataElement.ELEMENT_MAJOR
| VersionDataElement.ELEMENT_MINOR
+ | VersionDataElement.ELEMENT_POINT
+ | VersionDataElement.ELEMENT_RELEASE_LEVEL
+ | VersionDataElement.ELEMENT_RELEASE_QUALIFIER
+ | VersionDataElement.ELEMENT_BUILD_NUMBER);
+
+ public static final VersionDataElementSet FULL =
+ new VersionDataElementSet(
+ VersionDataElement.ELEMENT_MAJOR
| VersionDataElement.ELEMENT_MINOR
| VersionDataElement.ELEMENT_POINT
+ | VersionDataElement.ELEMENT_RELEASE_LEVEL
+ | VersionDataElement.ELEMENT_RELEASE_QUALIFIER
| VersionDataElement.ELEMENT_BUILD_NUMBER);
+ private int m_elementMask = VersionDataElement.ELEMENT_UNSET;
+
public VersionDataElementSet(int elementValues) {
+ m_elementMask = elementValues;
+
if (VersionDataElement.isMajor(elementValues)) {
! add(VersionDataElement.MAJOR);
}
! if (VersionDataElement.isMinor(elementValues)) {
add(VersionDataElement.MINOR);
}
+
+ if (VersionDataElement.isPoint(elementValues)) {
+ add(VersionDataElement.POINT);
+ }
+ }
+
+ public VersionDataElementSet intersect(VersionDataElementSet other) {
+ int mask1 = getElementMask();
+ int mask2 = other.getElementMask();
+
+ return new VersionDataElementSet(mask1 & mask2);
+ }
+
+ public VersionDataElementSet union(VersionDataElementSet other) {
+ int mask1 = getElementMask();
+ int mask2 = other.getElementMask();
+
+ return new VersionDataElementSet(mask1 | mask2);
}
+ /**
+ * Returns the elementMask.
+ * @return int
+ */
+ public int getElementMask() {
+ return m_elementMask;
+ }
+
+ /**
+ * Sets the elementMask.
+ * @param elementMask The elementMask to set
+ */
+ public void setElementMask(int elementMask) {
+ m_elementMask = elementMask;
+ }
+
+ public boolean hasMajor() {
+ return VersionDataElement.isMajor(m_elementMask);
+ }
+
+ public boolean hasMinor() {
+ return VersionDataElement.isMinor(m_elementMask);
+ }
+
+ public boolean hasPoint() {
+ return VersionDataElement.isPoint(m_elementMask);
+ }
+
+ public boolean hasReleaseLevel() {
+ return VersionDataElement.isReleaseLevel(m_elementMask);
+ }
+
+ public boolean hasReleaseQualifier() {
+ return VersionDataElement.isReleaseQualifier(m_elementMask);
+ }
+
+ public boolean hasBuildNumber() {
+ return VersionDataElement.isBuildNumber(m_elementMask);
+ }
+
+ public boolean hasEmpty() {
+ return (VersionDataElement.ELEMENT_UNSET == m_elementMask);
+ }
}
Index: VersionDataElement.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/internal/data/VersionDataElement.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** VersionDataElement.java 16 Feb 2003 14:43:21 -0000 1.2
--- VersionDataElement.java 7 Mar 2003 20:01:37 -0000 1.3
***************
*** 65,69 ****
* @author [email protected]
*/
! public class VersionDataElement {
public static final int MAX_MAJOR = 100;
--- 65,69 ----
* @author [email protected]
*/
! public class VersionDataElement implements Comparable {
public static final int MAX_MAJOR = 100;
***************
*** 93,97 ****
public static final ReleaseLevel DEFAULT_RELEASE_LEVEL =
ReleaseLevel.DEFAULT;
! public static final int DEFAULT_RELEASE_QUALIFIER = UNSET_RELEASE_QUALIFIER ;
public static final int DEFAULT_BUILD_NUMBER = UNSET_BUILD_NUMBER;
--- 93,97 ----
public static final ReleaseLevel DEFAULT_RELEASE_LEVEL =
ReleaseLevel.DEFAULT;
! public static final int DEFAULT_RELEASE_QUALIFIER = UNSET_RELEASE_QUALIFIER;
public static final int DEFAULT_BUILD_NUMBER = UNSET_BUILD_NUMBER;
***************
*** 300,303 ****
--- 300,306 ----
VersionDataElement otherElement = (VersionDataElement) other;
+ //
+ // :TODO: This work for a mask?
+ //
comparison = (m_element - otherElement.m_element);
}
Index: VersionDataComparator.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/internal/data/VersionDataComparator.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** VersionDataComparator.java 6 Feb 2003 19:15:48 -0000 1.3
--- VersionDataComparator.java 7 Mar 2003 20:01:37 -0000 1.4
***************
*** 81,120 ****
VersionData secondVersionData = (VersionData) second;
! // :TODO: Deal with null versions...
! // :TODO: Deal with unset values...
! comparison =
! (secondVersionData.getMajor()
! - firstVersionData.getMajor());
! if (0 == comparison)
! comparison =
! (secondVersionData.getMinor()
! - firstVersionData.getMinor());
! if (0 == comparison)
! comparison =
! (secondVersionData
! .getReleaseLevel()
! .compareTo(firstVersionData.getReleaseLevel()));
! if (0 == comparison)
! comparison =
! (secondVersionData.getPoint()
! - firstVersionData.getPoint());
! if (0 == comparison)
! comparison =
! (secondVersionData.getReleaseQualifier()
! - firstVersionData.getReleaseQualifier());
! if (0 == comparison)
! comparison =
! (secondVersionData.getBuildNumber()
! - firstVersionData.getBuildNumber());
! // :TODO: Attributes/Annotations/Constraints/second
}
}
return comparison;
--- 81,131 ----
VersionData secondVersionData = (VersionData) second;
! VersionDataElementSet set1 = firstVersionData.getElements();
! VersionDataElementSet set2 = secondVersionData.getElements();
! VersionDataElementSet overlap = set1.intersect(set2);
! if (!overlap.isEmpty()) {
! comparison = 0;
! // :TODO: Deal with null versions...
! // :TODO: Deal with unset values...
! if (overlap.hasMajor())
! comparison =
! (secondVersionData.getMajor()
! - firstVersionData.getMajor());
! if ((0 == comparison) && overlap.hasMinor())
! comparison =
! (secondVersionData.getMinor()
! - firstVersionData.getMinor());
! if ((0 == comparison) && overlap.hasReleaseLevel())
! comparison =
! (secondVersionData
! .getReleaseLevel()
! .compareTo(firstVersionData.getReleaseLevel()));
! if ((0 == comparison) && overlap.hasPoint())
! comparison =
! (secondVersionData.getPoint()
! - firstVersionData.getPoint());
!
! if ((0 == comparison) && overlap.hasReleaseQualifier())
! comparison =
! (secondVersionData.getReleaseQualifier()
! - firstVersionData.getReleaseQualifier());
!
! if ((0 == comparison) && overlap.hasBuildNumber())
! comparison =
! (secondVersionData.getBuildNumber()
! - firstVersionData.getBuildNumber());
!
! // :TODO: Attributes/Annotations/Constraints/second
! }
}
}
+ //:TODO: throw exceptions?
return comparison;
Index: VersionData.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-version/src/java/org/krysalis/version/internal/data/VersionData.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** VersionData.java 16 Feb 2003 14:43:21 -0000 1.17
--- VersionData.java 7 Mar 2003 20:01:37 -0000 1.18
***************
*** 56,60 ****
package org.krysalis.version.internal.data;
- import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.ArrayList;
--- 56,59 ----
***************
*** 73,76 ****
--- 72,76 ----
import org.krysalis.version.formatting.exception.VersionFormatException;
import org.krysalis.version.impl.CompoundVersion;
+ import org.krysalis.version.util.debug.DebugUtils;
import org.krysalis.version.util.logging.VersionLogger;
***************
*** 92,95 ****
--- 92,97 ----
VersionDataElement.UNSET_BUILD_NUMBER);
+ private VersionDataElementSet m_elements = null;
+
private int m_major = VersionDataElement.UNSET_MAJOR;
private int m_minor = VersionDataElement.UNSET_MINOR;
***************
*** 115,119 ****
--- 117,124 ----
// :TODO: Add a real increment/decrement
+ // :TODO: Check all constructors for elements
public VersionData() {
+ m_elements = VersionDataElementSet.DEFAULT;
+
m_major = VersionDataElement.DEFAULT_MAJOR;
m_minor = VersionDataElement.DEFAULT_MINOR;
***************
*** 125,128 ****
--- 130,136 ----
public VersionData(VersionData other) {
+
+ m_elements = other.m_elements;
+
m_major = other.m_major;
m_minor = other.m_minor;
***************
*** 137,140 ****
--- 145,150 ----
public VersionData(CompoundVersion version) throws VersionException {
+ m_elements = VersionDataElementSet.DEFAULT;
+
m_major = version.getMajor();
m_minor = version.getMinor();
***************
*** 176,179 ****
--- 186,190 ----
*/
public VersionData(
+ VersionDataElementSet elements,
int major,
int minor,
***************
*** 182,185 ****
--- 193,198 ----
int point,
int buildNumber) {
+ m_elements = elements;
+
m_major = major;
m_minor = minor;
***************
*** 191,194 ****
--- 204,227 ----
/**
+ * Constructor for VersionData.
+ */
+ public VersionData(
+ int major,
+ int minor,
+ ReleaseLevel releaseLevel,
+ int releaseQualifier,
+ int point,
+ int buildNumber) {
+ m_elements = VersionDataElementSet.DEFAULT;
+
+ m_major = major;
+ m_minor = minor;
+ m_releaseLevel = releaseLevel;
+ m_releaseQualifier = releaseQualifier;
+ m_point = point;
+ m_buildNumber = buildNumber;
+ }
+
+ /**
* Constructor for VersionData.
*/
***************
*** 201,204 ****
--- 234,239 ----
Map attributes)
throws VersionException {
+ m_elements = VersionDataElementSet.DEFAULT;
+
m_major = major;
m_minor = minor;
***************
*** 214,217 ****
--- 249,258 ----
*/
public VersionData(int major, int minor, int point) {
+ m_elements =
+ new VersionDataElementSet(
+ VersionDataElement.ELEMENT_MAJOR
+ | VersionDataElement.ELEMENT_MINOR
+ | VersionDataElement.ELEMENT_POINT);
+
m_major = major;
m_minor = minor;
***************
*** 461,464 ****
--- 502,507 ----
VersionData imported = format.parseVersion(version);
+ m_elements = imported.m_elements;
+
m_major = imported.m_major;
m_minor = imported.m_minor;
***************
*** 565,568 ****
--- 608,613 ----
}
+ //:TODO: Rework?
+
// Required? That is one bogus version w/o a major..
public boolean isMajorUnset() {
***************
*** 724,728 ****
needSeparator = true;
}
! if( (!VersionDataElement.UNSET_RELEASE_LEVEL.equals(m_releaseLevel))
&& !ReleaseLevel.RELEASE.equals(m_releaseLevel)) {
if (needSeparator)
--- 769,773 ----
needSeparator = true;
}
! if ((!VersionDataElement.UNSET_RELEASE_LEVEL.equals(m_releaseLevel))
&& !ReleaseLevel.RELEASE.equals(m_releaseLevel)) {
if (needSeparator)
***************
*** 822,835 ****
}
! public void dump(PrintStream out) {
! dump((new PrintWriter(out, true)));
}
! public void dump(PrintWriter out) {
out.println("Major:" + m_major);
out.println("Minor:" + m_minor);
out.println("ReleaseLevel:" + m_releaseLevel);
out.println("ReleaseQualifier:" + m_releaseQualifier);
out.println("Point:" + m_point);
out.println("BuildNumber:" + m_buildNumber);
--- 867,913 ----
}
! /**
! * Returns the elements.
! * @return VersionDataElementSet
! */
! public VersionDataElementSet getElements() {
! return m_elements;
}
! /**
! * Sets the elements.
! * @param elements The elements to set
! */
! public void setElements(VersionDataElementSet elements) {
! m_elements = elements;
! }
!
! /**
! * Sets the releaseQualifier.
! * @param releaseQualifier The releaseQualifier to set
! */
! public void setReleaseQualifier(int releaseQualifier) {
! m_releaseQualifier = releaseQualifier;
! }
!
! public void dump(PrintWriter out, int depth) {
! String indent = DebugUtils.getIndent(depth);
!
! out.print(indent);
out.println("Major:" + m_major);
+
+ out.print(indent);
out.println("Minor:" + m_minor);
+
+ out.print(indent);
out.println("ReleaseLevel:" + m_releaseLevel);
+
+ out.print(indent);
out.println("ReleaseQualifier:" + m_releaseQualifier);
+
+ out.print(indent);
out.println("Point:" + m_point);
+
+ out.print(indent);
out.println("BuildNumber:" + m_buildNumber);
-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger
for complex code. Debugging C/C++ programs can leave you feeling lost and
disoriented. TotalView can help you find your way. Available on major UNIX
and Linux platforms. Try it free. www.etnus.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.