Update of /cvsroot/krysalis/krysalis-version/src/main/org/krysalis/version/analysis
In directory sc8-pr-cvs1:/tmp/cvs-serv6646/src/main/org/krysalis/version/analysis
Added Files:
Analyzer.java
Log Message:
Start on environment analysis (comparison against a fixed base)
--- NEW FILE: Analyzer.java ---
/*
* Created on Nov 2, 2003
*/
package org.krysalis.version.analysis;
import java.util.Iterator;
import org.krysalis.version.Version;
import org.krysalis.version.VersionMarker;
import org.krysalis.version.context.VersionEnvironment;
import org.krysalis.version.context.VersionInformation;
import org.krysalis.version.context.VersionRegistry;
import org.krysalis.version.util.note.AnnotationScratchpad;
/**
* @author arb_jack
*/
public class Analyzer {
public static AnnotationScratchpad analyze(
VersionEnvironment current,
VersionEnvironment base) {
AnnotationScratchpad analysis = new AnnotationScratchpad("Environment Analysis");
if ((null == current) && (null == base))
return analysis;
if (null == current) {
analysis.warning("No version to compare against base: " + base);
}
else if (null == base) {
analysis.warning(
"No version to compare against current: " + current);
}
else {
analyzeJVM(analysis, current, base);
analyzeVersionRegistry(
analysis,
current.getVersions(),
base.getVersions());
}
return analysis;
}
public static void analyzeJVM(
AnnotationScratchpad analysis,
VersionEnvironment current,
VersionEnvironment base) {
analyzeMarkers(analysis, current.getJvmVersion(), base.getJvmVersion());
analyzeMarkers(
analysis,
current.getJvmSpecificationVersion(),
base.getJvmSpecificationVersion());
}
public static void analyzeVersionRegistry(
AnnotationScratchpad analysis,
VersionRegistry current,
VersionRegistry base) {
for (Iterator i = base.iterator(); i.hasNext();) {
VersionInformation baseInfo = (VersionInformation) i.next();
VersionInformation currentInfo =
current.getInformation(baseInfo.getIdentifier());
analyzeInfos(analysis, currentInfo, baseInfo);
}
}
public static void analyzeInfos(
AnnotationScratchpad analysis,
VersionInformation current,
VersionInformation base) {
if ((null == current) && (null == base))
return;
if (null == current) {
analysis.warning("No info to compare against base: " + base);
}
else if (null == base) {
analysis.warning("No info to compare against current: " + current);
}
else if (!current.equals(base)) {
analysis.info(
"Difference " + current + " : " + base);
analyzeMarkers(
analysis,
current.getVersionMarker(),
base.getVersionMarker());
}
else
analysis.verbose(
"Match : " + base);
}
public static void analyzeMarkers(
AnnotationScratchpad analysis,
VersionMarker current,
VersionMarker base) {
if ((null == current) && (null == base))
return;
if (null == current) {
analysis.warning("No marker to compare against base: " + base);
}
else if (null == base) {
analysis.warning(
"No marker to compare against current: " + current);
}
else if (!current.equals(base)) {
analysis.info("Difference " + current + " : " + base);
analyzeVersions(analysis, current.getVersion(), base.getVersion());
}
else
analysis.verbose(
"Match : " + base);
}
public static void analyzeVersions(
AnnotationScratchpad analysis,
Version current,
Version base) {
if ((null == current) && (null == base))
return;
if (null == current) {
analysis.warning("No version to compare against base: " + base);
}
else if (null == base) {
analysis.warning(
"No version to compare against current: " + current);
}
else if (!current.equals(base)) {
analysis.info("Difference " + current + " : " + base);
if (!current.isCompatible(base))
analysis.error(
"Incompatible Versions " + current + " : " + base);
}
else
analysis.verbose(
"Match : " + base);
}
}
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/
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.