Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/org.eclipse.jst.validation.sample/propertiesValidator/org/eclipse/jst/validation/sample/parser/CompareProperties.java')
-rw-r--r--tests/org.eclipse.jst.validation.sample/propertiesValidator/org/eclipse/jst/validation/sample/parser/CompareProperties.java377
1 files changed, 0 insertions, 377 deletions
diff --git a/tests/org.eclipse.jst.validation.sample/propertiesValidator/org/eclipse/jst/validation/sample/parser/CompareProperties.java b/tests/org.eclipse.jst.validation.sample/propertiesValidator/org/eclipse/jst/validation/sample/parser/CompareProperties.java
deleted file mode 100644
index f3e87d43..00000000
--- a/tests/org.eclipse.jst.validation.sample/propertiesValidator/org/eclipse/jst/validation/sample/parser/CompareProperties.java
+++ /dev/null
@@ -1,377 +0,0 @@
-package org.eclipse.jst.validation.sample.parser;
-/*
- * Licensed Material - Property of IBM
- * (C) Copyright IBM Corp. 2002, 2003 - All Rights Reserved.
- * US Government Users Restricted Rights - Use, duplication or disclosure
- * restricted by GSA ADP Schedule Contract with IBM Corp.
- *
- * DISCLAIMER OF WARRANTIES.
- * The following [enclosed] code is sample code created by IBM
- * Corporation. This sample code is not part of any standard or IBM
- * product and is provided to you solely for the purpose of assisting
- * you in the development of your applications. The code is provided
- * "AS IS". IBM MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
- * NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE, REGARDING THE FUNCTION OR PERFORMANCE OF
- * THIS CODE. THIS CODE MAY CONTAIN ERRORS. IBM shall not be liable
- * for any damages arising out of your use of the sample code, even
- * if it has been advised of the possibility of such damages.
- *
- */
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-/**
- * This class compares two .properties file and outputs a list
- * of the differences. This class is used to count the number
- * of words that have changed.
- */
-public class CompareProperties {
- public static final String lineSeparator = java.lang.System.getProperty("line.separator"); //$NON-NLS-1$
- private TreeSet _deleted = null;
- private TreeMap _changed = null;
- private TreeSet _added = null;
- private PropertyFile _oldFile = null;
- private PropertyFile _newFile = null;
-
- /**
- * This class is used to store PropertyLine instances which have the same
- * message id, but different values. When the list of differences is output,
- * all values are output so that the user can compare the lines manually, to
- * see what's different.
- */
- class CompareLine implements Comparable {
- private ArrayList _lines;
- private final String _messageId;
-
- public CompareLine(String messageId) {
- _messageId = messageId;
- _lines = new ArrayList();
- }
-
- public void add(PropertyLine oldLine, PropertyLine newLine) {
- _lines.add(new PropertyLine[]{oldLine, newLine});
- }
-
- public String toString() {
- StringBuffer buffer = new StringBuffer();
- Iterator iterator = _lines.iterator();
- while (iterator.hasNext()) {
- buffer.append(lineSeparator);
- buffer.append("\t"); //$NON-NLS-1$
- PropertyLine[] lines = (PropertyLine[])iterator.next();
-
- buffer.append(lines[0]);
- buffer.append("\n"); //$NON-NLS-1$
- buffer.append(lines[1]);
- }
- return buffer.toString();
- }
-
- /**
- * Since this is a changed string, return the absolute difference of words between the strings.
- */
- public int getNumWords() {
- int numWords = 0;
- Iterator iterator = _lines.iterator();
- while (iterator.hasNext()) {
- PropertyLine[] lines = (PropertyLine[])iterator.next();
- numWords = numWords + compare(lines[0], lines[1]);
- }
- return numWords;
- }
-
- private int compare(PropertyLine oldLine, PropertyLine newLine) {
- // For every word in the old string, see if it exists in the new
- // string. The position of the word doesn't matter - if the word
- // exists in the new, then the word is not counted as a "changed"
- // word.
- // 1. If the word exists, remove the word from the newLine and
- // advance to the next old token. (Remove word from newLine
- // in case the word existed twice in the old string but only
- // once in the new. The second oldWord should be counted as
- // a changed word.)
- // 2. If the word doesn't exist, numChanged++ and advance to the
- // next old token.
- // 3. Once all of the oldWords have been checked, tokenize the
- // remaining newWord and count the number of words in the string.
- // These words have been added and each one counts as a
- // changed word.
- int numChangedWords = 0;
- StringTokenizer oldTokenizer = new StringTokenizer(oldLine.getMessage());
-
- // Need to be careful...want the entire word, not oldWord="on" mistaken for newWord="one" or newWord="bond"
- // Easier to create a list of new words to compare against.
- StringTokenizer newTokenizer = new StringTokenizer(newLine.getMessage());
- List newWords = new ArrayList(); // Can't use a set in case the newLine uses a word, e.g. "the", more than once.
- while(newTokenizer.hasMoreTokens()) {
- newWords.add(newTokenizer.nextToken());
- }
-
- while(oldTokenizer.hasMoreTokens()) {
- String oldWord = oldTokenizer.nextToken();
- if(newWords.contains(oldWord)) {
- newWords.remove(oldWord);
- }
- else {
- numChangedWords++;
- }
- }
-
- // Can count the tokens but not the elments.
- numChangedWords += newWords.size();
- return numChangedWords;
- }
-
- public String getMessageId() {
- return _messageId;
- }
-
- public int compareTo(Object o) {
- // by default, sort by message id
- if (!(o instanceof CompareLine)) {
- // then how on earth did this method get called??
- // put it at the end of the list
- return 1;
- }
-
- return getMessageId().compareTo(((CompareLine) o).getMessageId());
- }
- }
-
- /**
- * Compare the two PropertyFile and print out a list of the differences;
- * the first parameter is the older .properties file, and the second
- * parameter is the newer .properties file.
- */
- public CompareProperties(PropertyFile oldFile, PropertyFile newFile) {
- _deleted = new TreeSet();
- _changed = new TreeMap();
- _added = new TreeSet();
-
- _oldFile = oldFile;
- _newFile = newFile;
-
- compare(oldFile, newFile);
- }
-
- /**
- * In the older PropertyFile, the message text was different; cache the
- * older version of the PropertyLine and the newer version of the PropertyLine.
- */
- private void addChanged(PropertyLine oldLine, PropertyLine newLine) {
- CompareLine cl = (CompareLine) _changed.get(oldLine.getMessageId());
- if (cl == null) {
- cl = new CompareLine(oldLine.getMessageId());
- }
- cl.add(oldLine, newLine);
- _changed.put(oldLine.getMessageId(), cl);
- }
-
- /**
- * Compare the two property files and build the collections of variable names with
- * their associated values.
- */
- public void compare(PropertyFile oldFile, PropertyFile newFile) {
- _added.clear();
- _deleted.clear();
- _changed.clear();
-
- // For each element in file 1, see if it exists in file 2
- // a) if it doesn't exist, add it to the list of "deleted" strings
- // b) if it exists, and if the value is different, add it to the list of "changed" strings
- // c) if it exists, and if the value is the same, add it to the list of "not changed" strings
- // d) delete the entry, if it exists, from file 2's hashtable so we don't check it twice.
- // For each element in file 2 not checked already, it cannot exist in file 1, so add it to the list of "new" strings
- //
- // Need some way to abort comparison if either of the files contains duplicate
- // message ids.
- //
- List oldKeys = new ArrayList(oldFile.getPropertyLines());
- List newKeys = new ArrayList(newFile.getPropertyLines());
- Collections.sort(oldKeys, PropertyLineComparator.getMessageIdComparator());
- Collections.sort(newKeys, PropertyLineComparator.getMessageIdComparator());
- Iterator oldIterator = oldKeys.iterator();
- Iterator newIterator = newKeys.iterator();
- PropertyLine oldLine = (oldIterator.hasNext()) ? (PropertyLine) oldIterator.next() : null;
- PropertyLine newLine = (newIterator.hasNext()) ? (PropertyLine) newIterator.next() : null;
- while ((oldLine != null) && (newLine != null)) {
- // oldLine message id is either <, =, or > newLine message id.
- // if <, message id has been deleted.
- // if =, see if changed (or just compare message ids.)
- // if >, new line is a new message id.
- // to increment, increment only the < (whether it's oldLine or newLine).
- int compare = oldLine.getMessageId().compareTo(newLine.getMessageId());
- if (compare < 0) {
- // deleted
- _deleted.add(oldLine);
- if (oldIterator.hasNext()) {
- oldLine = (PropertyLine) oldIterator.next();
- }
- else {
- oldLine = null;
- }
- }
- else if (compare == 0) {
- // existed before. Check if changed.
- if (!oldLine.getMessage().equals(newLine.getMessage())) {
- // changed
- addChanged(oldLine, newLine);
- }
- if (oldIterator.hasNext() && newIterator.hasNext()) {
- oldLine = (PropertyLine) oldIterator.next();
- newLine = (PropertyLine) newIterator.next();
- }
- else {
- oldLine = null;
- newLine = null;
- }
-
- }
- else {
- // added
- _added.add(newLine);
- if (newIterator.hasNext()) {
- newLine = (PropertyLine) newIterator.next();
- }
- else {
- newLine = null;
- }
- }
- }
-
- if (oldLine != null) {
- _deleted.add(oldLine);
- }
-
- if (newLine != null) {
- _added.add(newLine);
- }
-
- while (oldIterator.hasNext()) {
- // all of the rest have been deleted
- _deleted.add(oldIterator.next());
- }
-
- while (newIterator.hasNext()) {
- // all of the rest have been added
- _added.add(newIterator.next());
- }
- }
-
- /**
- * Return a Collction of PropertyLine instances that exist in
- * the newer PropertyFile that aren't in the older PropertyFile.
- */
- public Set getAdded() {
- return _added;
- }
-
- /**
- * Return a Collection of CompareLine instances that represent
- * the two PropertyLine instances; one from the older PropertyFile,
- * and one from the newer PropertyFile.
- */
- public Collection getChanged() {
- return _changed.values();
- }
-
- /**
- * Return a Collection of PropertyLine instances that do not
- * exist in the newer PropertyFile yet that exist in the older
- * PropertyFile.
- */
- public Set getDeleted() {
- return _deleted;
- }
-
- /**
- * Print out all of the collections of variable strings.
- */
- public void printResults() {
- // create an output log in the current directory, and in it list the strings in a section each.
- int numNew = printStrings("NEW PROPERTIES", _added); //$NON-NLS-1$
-
- int numWordsDeleted = printStrings("DELETED PROPERTIES", _deleted); //$NON-NLS-1$
- int numWordsChanged = printStrings("CHANGED PROPERTIES", _changed.values()); //$NON-NLS-1$
- float totalChange = numNew + numWordsDeleted + numWordsChanged;
- float numWords = _newFile.getNumWords();
- float percent = totalChange / numWords * 100;
-
- System.out.println();
- System.out.println("Number of new words: " + numNew); //$NON-NLS-1$
- System.out.println("Number of words in deleted messages: " + numWordsDeleted); //$NON-NLS-1$
- System.out.println("Number of changed words in modified messages: " + numWordsChanged); //$NON-NLS-1$
- System.out.println("Number of words in file " + _newFile.getQualifiedFileName() + ": " + numWords); //$NON-NLS-1$ //$NON-NLS-2$
- System.out.println("Total change of words: " + totalChange + ", which is a " + percent + "% change."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- public void printResultsForTranslation() {
- // create an output log in the current directory, and in it list the strings in a section each.
- printStringsForTranslation("DELETED PROPERTIES", _deleted); //$NON-NLS-1$
- printStringsForTranslation("NEW PROPERTIES", _added); //$NON-NLS-1$
- printStringsForTranslation("CHANGED PROPERTIES", _changed.values()); //$NON-NLS-1$
- }
-
- /**
- * Print the number of lines in the .properties file.
- */
- private int printStrings(String header, Collection lines) {
- System.out.println();
- System.out.println(header);
- int count = 0;
- int numWords = 0;
- Iterator iterator = lines.iterator();
- while (iterator.hasNext()) {
- Object line = iterator.next();
- if(line instanceof PropertyLine) {
- numWords += ((PropertyLine)line).getNumWords();
- }
- else {
- // must be a compare line
- numWords += ((CompareLine)line).getNumWords();
- }
-
- count++;
- System.out.println(line);
- }
- System.out.println("Number of properties: " + count); //$NON-NLS-1$
- System.out.println();
- return numWords;
- }
-
- /**
- * Print the contents of the sorted collection of lines from the .properties file.
- */
- private void printStringsForTranslation(String header, Collection lines) {
- System.out.println();
- System.out.println(header);
- int count = 0;
- Iterator iterator = lines.iterator();
- while (iterator.hasNext()) {
- count++;
- Object line = iterator.next();
- if (line instanceof PropertyLine) {
- PropertyLine propline = (PropertyLine) line;
- System.out.println(propline.getMessageId());
- }
- else if (line instanceof CompareLine) {
- CompareLine propline = (CompareLine) line;
- System.out.println(propline.getMessageId());
- }
- else {
- System.out.println("instance of " + line.getClass().getName()); //$NON-NLS-1$
- }
- }
- System.out.println("Total: " + count); //$NON-NLS-1$
- System.out.println();
- }
-} \ No newline at end of file

Back to the top