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 'bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/uddi/datamodel/CategoryModel.java')
-rw-r--r--bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/uddi/datamodel/CategoryModel.java569
1 files changed, 0 insertions, 569 deletions
diff --git a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/uddi/datamodel/CategoryModel.java b/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/uddi/datamodel/CategoryModel.java
deleted file mode 100644
index f2966562b..000000000
--- a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/platform/uddi/datamodel/CategoryModel.java
+++ /dev/null
@@ -1,569 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-import java.text.ParseException;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.Vector;
-import javax.servlet.ServletContext;
-import org.eclipse.wst.ws.internal.datamodel.BasicModel;
-import org.eclipse.wst.ws.internal.datamodel.Element;
-import org.eclipse.wst.ws.internal.explorer.platform.constants.ModelConstants;
-import org.eclipse.wst.ws.internal.explorer.platform.uddi.constants.UDDIModelConstants;
-import org.eclipse.wst.ws.internal.explorer.platform.util.HTMLUtils;
-import org.eclipse.wst.ws.internal.model.v10.taxonomy.Category;
-import org.eclipse.wst.ws.internal.model.v10.taxonomy.Taxonomy;
-import org.uddi4j.util.KeyedReference;
-
-public class CategoryModel extends BasicModel
-{
- private ServletContext application_;
- private String defaultDataFile_;
- private Hashtable categoryElements_;
- private String columnDelimiter_;
- private String stringDelimiter_;
- private String categoryKey_;
- private boolean checked_;
- private String displayName_;
- private String tModelKey_;
- private Throwable errorException_;
-
- // Return codes for loading and saving category data.
- public static final byte OPERATION_SUCCESSFUL = 0x00;
- public static final byte ERROR_FILE = 0x01;
- public static final byte ERROR_SECURITY = 0x02;
- public static final byte ERROR_ENCODING = 0x03;
- public static final byte ERROR_IO = 0x04;
- public static final byte ERROR_CATEGORY_KEY = 0x05;
-
- private final String defaultColumnDelimiter_ = "#";
- private final String defaultStringDelimiter_ = "\"";
-
- public CategoryModel()
- {
- super("categories");
- application_ = null;
- defaultDataFile_ = null;
- columnDelimiter_ = defaultColumnDelimiter_;
- stringDelimiter_ = defaultStringDelimiter_;
- categoryElements_ = null;
- categoryKey_ = null;
- checked_ = true;
- displayName_ = null;
- tModelKey_ = null;
- errorException_ = null;
- }
-
- /**
- * CategoryModels load their data from the file named via the
- * {@link #setDefaultDataFile(String)} method. The data file
- * name is interpretted as either a physical pathname or a
- * context-root relative pathname depending on whether the
- * servlet context or "application" is null (default) or not.
- * @param application The application context, null by default.
- * Value can be the ServletContext of the WSExplorer or null.
- */
- public final void setServletContext(ServletContext application)
- {
- application_ = application;
- }
-
- public final void setDefaultDataFile(String defaultDataFile)
- {
- defaultDataFile_ = defaultDataFile;
- }
-
- public final void setCategoryKey(String categoryKey)
- {
- categoryKey_ = categoryKey;
- }
-
- public final String getCategoryKey()
- {
- return categoryKey_;
- }
-
- public final void setColumnDelimiter(String columnDelimiter)
- {
- columnDelimiter_ = columnDelimiter;
- }
-
- public final String getColumnDelimiter()
- {
- return columnDelimiter_;
- }
-
- public final void setStringDelimiter(String stringDelimiter)
- {
- stringDelimiter_ = stringDelimiter;
- }
-
- public final String getStringDelimiter()
- {
- return stringDelimiter_;
- }
-
- public final void enableChecked(boolean isChecked)
- {
- checked_ = isChecked;
- }
-
- public final boolean isChecked()
- {
- return checked_;
- }
-
- public final void setDisplayName(String displayName)
- {
- displayName_ = displayName;
- }
-
- public final String getDisplayName()
- {
- return displayName_;
- }
-
- public final void setTModelKey(String tModelKey)
- {
- tModelKey_ = tModelKey;
- }
-
- public final String getTModelKey()
- {
- return tModelKey_;
- }
-
- public final boolean isDataLoaded()
- {
- return (categoryElements_ != null);
- }
-
- public final Throwable getErrorException()
- {
- return errorException_;
- }
-
- private final boolean isEnclosedInQuotes(String string)
- {
- return string.startsWith("\"") && string.endsWith("\"");
- }
-
- public final void loadFromTaxonomy(Taxonomy taxonomy)
- {
- String name = taxonomy.getName();
- CategoryElement root = new CategoryElement(name,null,this);
- setRootElement(root);
- categoryElements_ = new Hashtable();
- for (Iterator it = taxonomy.getCategory().iterator(); it.hasNext();)
- {
- addCategory(root, (Category)it.next());
- }
- }
-
- private void addCategory(CategoryElement parent, Category category)
- {
- String keyName = category.getName();
- String keyValue = category.getCode();
- CategoryElement child = new CategoryElement(keyName,new KeyedReference(keyName,keyValue,tModelKey_),this);
- parent.connect(child,UDDIModelConstants.REL_SUBCATEGORIES,ModelConstants.REL_OWNER);
- categoryElements_.put(keyValue, child);
- for (Iterator it = category.getCategory().iterator(); it.hasNext();)
- {
- addCategory(child, (Category)it.next());
- }
- }
-
- public final byte loadFromDefaultDataFile()
- {
- try
- {
- if (defaultDataFile_ == null)
- throw new FileNotFoundException();
- BufferedReader br = null;
- if (application_ == null)
- br = new BufferedReader(new InputStreamReader(new FileInputStream(defaultDataFile_),HTMLUtils.UTF8_ENCODING));
- else
- br = new BufferedReader(new InputStreamReader(application_.getResourceAsStream(defaultDataFile_),HTMLUtils.UTF8_ENCODING));
- return loadData(br);
- }
- catch (FileNotFoundException e)
- {
- errorException_ = e;
- return ERROR_FILE;
- }
- catch (SecurityException e)
- {
- errorException_ = e;
- return ERROR_SECURITY;
- }
- catch (UnsupportedEncodingException e)
- {
- errorException_ = e;
- return ERROR_ENCODING;
- }
- }
-
- public final byte loadFromDelimiterFile()
- {
- // Get the associated .properties file and set the delimiters. The defaultDataFile_ is set to the delimiter file in this case.
- // The properties file contains the following keys:
- // wsad.dataFile - location of the category data file.
- // wsad.checked - whether or not the category is checked.
- // wsad.name - the display name of the category.
- // column.delimiter - the delimiter character used for separating columns.
- // string.delimiter - the delimiter character used to encapsulate data such that column delimiter characters are treated as data.
- try
- {
- Properties p = new Properties();
- InputStream fin = null;
- if (application_ == null)
- fin = new FileInputStream(defaultDataFile_);
- else
- fin = application_.getResourceAsStream(defaultDataFile_);
- p.load(fin);
- fin.close();
- columnDelimiter_ = p.getProperty("column.delimiter");
- stringDelimiter_ = p.getProperty("string.delimiter");
- defaultDataFile_ = p.getProperty("wsad.dataFile");
- return loadFromDefaultDataFile();
- }
- catch (FileNotFoundException e)
- {
- errorException_ = e;
- return ERROR_FILE;
- }
- catch (SecurityException e)
- {
- errorException_ = e;
- return ERROR_SECURITY;
- }
- catch (IOException e)
- {
- errorException_ = e;
- return ERROR_IO;
- }
- }
-
- public final byte loadData(BufferedReader br)
- {
- errorException_ = null;
- CategoryElement rootElement = null;
- categoryElements_ = new Hashtable();
- byte returnCode = OPERATION_SUCCESSFUL;
- String line = null;
- int lineNumber = 0;
- try
- {
- char columnDelimiterChar = columnDelimiter_.charAt(0);
- char stringDelimiterChar = stringDelimiter_.charAt(0);
- Vector values = new Vector();
- while((line = br.readLine()) != null)
- {
- lineNumber++;
- // Ignore blank lines.
- if (line.trim().length() == 0)
- continue;
- int index = 0;
- int length = line.length();
- boolean inStringDelimiters = false;
- values.removeAllElements();
- StringBuffer currentToken = new StringBuffer();
- while (index < length)
- {
- char currentChar = line.charAt(index);
- if (inStringDelimiters)
- {
- // In quote so ignoring delimiters
- if (currentChar == stringDelimiterChar)
- {
- if (index < length - 1)
- {
- // currentChar could be a closing string delimiter or escape
- // Need to look ahead to be sure...
- char followingChar = line.charAt(index + 1);
- if (followingChar == stringDelimiterChar)
- {
- // There is an escaped quote
- currentToken.append(stringDelimiterChar);
- // jump forward two characters.
- index += 2;
- }
- else
- {
- // There was a closing string delimiter...jump forward to the next delimiter
- inStringDelimiters = false;
- //look for the next column delimiter character
- int nextDelimiter = line.indexOf(columnDelimiterChar, index);
- if (nextDelimiter == -1)
- {
- // There were no more delimiters so break out of the loop
- break;
- }
- else
- {
- values.addElement(currentToken.toString());
- //values[tokenCount++] = currentToken.toString();
- currentToken.setLength(0);
- inStringDelimiters = false;
- index = nextDelimiter + 1;
- }
- }
- }
- else
- {
- // This is the last character and it's a closing string delimiter.
- index++;
- inStringDelimiters = false;
- }
- }
- else
- {
- currentToken.append(currentChar);
- index++;
- }
- }
- else if (currentChar == columnDelimiterChar)
- {
- // There was a delimiter outside of quotes
- values.addElement(currentToken.toString());
- //values[tokenCount++] = currentToken.toString();
- currentToken.setLength(0);
- index++;
- }
- else if (currentChar == stringDelimiterChar)
- {
- // A quote appearing outside of quotes must be a opening quote
- inStringDelimiters = true;
- index++;
- }
- else
- {
- // There is a normal char outside of quotes
- currentToken.append(currentChar);
- index++;
- }
- }
- // Expect token count to be values.length - 1 at this point if everything is ok
- if (inStringDelimiters)
- {
- br.close();
- throw new ParseException(line,lineNumber);
- }
-
- // Add the final token.
- values.addElement(currentToken.toString());
-
- // 3 columns format. From left to right, these are:
- // 1) category's key value
- // 2) category's key name
- // 3) category's parent key value
- // Convert to 4 columns format.
- if (values.size() == 3)
- {
- if (categoryKey_ != null)
- values.insertElementAt(categoryKey_, 0);
- else
- values.insertElementAt(tModelKey_, 0);
- }
-
- // 4 columns format. From left to right, these are:
- // 1) type of category (categoryKey)
- // 2) category's key value
- // 3) category's key name
- // 4) category's parent key value
- if (values.size() == 4)
- {
- String categoryKey = (String)values.elementAt(0);
- if (categoryKey_ == null)
- categoryKey_ = categoryKey;
- else if (!categoryKey_.equals(categoryKey))
- throw new Exception(categoryKey);
- String keyValue = (String)values.elementAt(1);
- String keyName = (String)values.elementAt(2);
- String parentKeyValue = (String)values.elementAt(3);
- if (rootElement == null)
- {
- rootElement = new CategoryElement(displayName_,null,this);
- setRootElement(rootElement);
- }
- if (isEnclosedInQuotes(keyName))
- keyName = keyName.substring(1,keyName.length()-1);
- // Check if the CategoryElement already exists. If it does, refresh the Category.
- CategoryElement categoryElement = (CategoryElement)categoryElements_.get(keyValue);
- if (categoryElement != null)
- categoryElement.updateCategory(keyName,keyValue,tModelKey_);
- else
- categoryElement = new CategoryElement(keyName,new KeyedReference(keyName,keyValue,tModelKey_),this);
- Element parentElement;
- if (parentKeyValue.equals(keyValue))
- parentElement = rootElement;
- else
- parentElement = (Element)categoryElements_.get(parentKeyValue);
- if (parentElement == null)
- {
- parentElement = new CategoryElement("temp",new KeyedReference("",parentKeyValue,tModelKey_),this);
- categoryElements_.put(parentKeyValue,parentElement);
- }
- else
- parentElement.connect(categoryElement,UDDIModelConstants.REL_SUBCATEGORIES,ModelConstants.REL_OWNER);
- categoryElements_.put(keyValue,categoryElement);
- }
- else
- {
- br.close();
- throw new ParseException(line,lineNumber);
- }
- }
- br.close();
- return returnCode;
- }
- catch (IOException e)
- {
- errorException_ = e;
- returnCode = ERROR_IO;
- }
- catch (ParseException e)
- {
- errorException_ = e;
- returnCode = ERROR_FILE;
- }
- catch (Exception e)
- {
- errorException_ = e;
- returnCode = ERROR_CATEGORY_KEY;
- }
- categoryElements_ = null;
- return returnCode;
- }
-
- private final void saveData(PrintWriter pw,CategoryElement categoryElement,CategoryElement parentElement,boolean isFirst)
- {
- // File format:
- // <categoryKey>#<keyValue>#<keyName>#<parentKeyValue>
- KeyedReference kr = categoryElement.getCategory();
- // Check if this is not the root element.
- if (kr != null)
- {
- String keyName = kr.getKeyName();
- String keyValue = kr.getKeyValue();
- String parentKeyValue;
- if (parentElement == null)
- parentKeyValue = keyValue;
- else
- {
- KeyedReference parentKr = parentElement.getCategory();
- // Check if the parent is the root element.
- if (parentKr == null)
- parentKeyValue = keyValue;
- else
- parentKeyValue = parentKr.getKeyValue();
- }
- if (!isFirst)
- pw.println();
- else
- isFirst = false;
- pw.print(mangle(categoryKey_));
- pw.print(columnDelimiter_);
- pw.print(mangle(keyValue));
- pw.print(columnDelimiter_);
- pw.print(mangle(keyName));
- pw.print(columnDelimiter_);
- pw.print(mangle(parentKeyValue));
- }
- Enumeration e = categoryElement.getElements(UDDIModelConstants.REL_SUBCATEGORIES);
- if (e != null)
- {
- while (e.hasMoreElements())
- saveData(pw,(CategoryElement)e.nextElement(),categoryElement,isFirst);
- }
- }
-
- // Mangle an input string if it contains default column delimiter characters by surrounding it with the string delimiters.
- private final String mangle(String input)
- {
- if (input != null && input.indexOf(columnDelimiter_) != -1)
- {
- StringBuffer s = new StringBuffer(input);
- s.insert(0,stringDelimiter_).append(stringDelimiter_);
- return s.toString();
- }
- return input;
- }
-
- public final byte saveData(String fileName)
- {
- // The fileName should already be URLEncoded.
- byte returnCode = OPERATION_SUCCESSFUL;
- errorException_ = null;
- if (isDataLoaded())
- {
- try
- {
- PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(fileName),HTMLUtils.UTF8_ENCODING),true);
- CategoryElement rootElement = (CategoryElement)getRootElement();
- saveData(pw,rootElement,null,true);
- pw.flush();
- pw.close();
- // Save the properties file.
- Properties p = new Properties();
- p.setProperty("wsad.dataFile",fileName);
- p.setProperty("wsad.checked",String.valueOf(checked_));
- p.setProperty("wsad.name",displayName_);
- p.setProperty("column.delimiter",columnDelimiter_);
- p.setProperty("string.delimiter",stringDelimiter_);
- StringBuffer propertiesFileName = new StringBuffer(fileName.substring(0,fileName.lastIndexOf('.')));
- propertiesFileName.append(".properties");
- FileOutputStream fout = new FileOutputStream(propertiesFileName.toString());
- p.store(fout,null);
- fout.close();
- }
- catch (FileNotFoundException e)
- {
- errorException_ = e;
- returnCode = ERROR_FILE;
- }
- catch (SecurityException e)
- {
- errorException_ = e;
- returnCode = ERROR_SECURITY;
- }
- catch (UnsupportedEncodingException e)
- {
- errorException_ = e;
- returnCode = ERROR_ENCODING;
- }
- catch (IOException e)
- {
- errorException_ = e;
- returnCode = ERROR_IO;
- }
- }
- return returnCode;
- }
-
- public String toString()
- {
- return displayName_;
- }
-}

Back to the top