| /******************************************************************************* |
| * Copyright (c) 2004, 2007 Boeing. |
| * 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: |
| * Boeing - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.osee.ote.ui.test.manager.core; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import java.util.HashMap; |
| import java.util.Iterator; |
| import java.util.logging.Level; |
| import javax.xml.parsers.ParserConfigurationException; |
| import javax.xml.transform.TransformerException; |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.osee.framework.jdk.core.util.xml.Jaxp; |
| import org.eclipse.osee.framework.logging.OseeLog; |
| import org.eclipse.osee.ote.ui.test.manager.internal.TestManagerPlugin; |
| import org.eclipse.osgi.service.datalocation.Location; |
| import org.eclipse.ui.IEditorInput; |
| import org.eclipse.ui.IPersistableElement; |
| import org.w3c.dom.Document; |
| import org.w3c.dom.Element; |
| import org.w3c.dom.Node; |
| import org.w3c.dom.NodeList; |
| |
| public class TestManagerInput implements IEditorInput { |
| private final HashMap<String, String> keyValue; |
| |
| public TestManagerInput() { |
| keyValue = new HashMap<>(); |
| loadFromFile(); |
| } |
| |
| @Override |
| public boolean equals(Object object) { |
| if (object instanceof TestManagerInput) { |
| return true; |
| } |
| return false; |
| } |
| |
| @Override |
| public boolean exists() { |
| return false; |
| } |
| |
| @Override |
| public Object getAdapter(Class adapter) { |
| return null; |
| } |
| |
| public String getDefaultXML() { |
| return "<testManager>" + "<contact></contact>" + "<description>Test Manager</description>" + |
| "<distributionStatement></distributionStatement>" + "</testManager>"; |
| |
| } |
| |
| @Override |
| public ImageDescriptor getImageDescriptor() { |
| return null; |
| } |
| |
| @Override |
| public String getName() { |
| return "TestManager"; |
| } |
| |
| @Override |
| public IPersistableElement getPersistable() { |
| return null; |
| } |
| |
| @Override |
| public String getToolTipText() { |
| return "OSEE TestManager"; |
| } |
| |
| public String getValue(String key) { |
| return keyValue.get(key); |
| } |
| |
| public void storeValue(String key, String value) throws ParserConfigurationException, TransformerException, IOException { |
| keyValue.put(key, value); |
| saveToFile(); |
| } |
| |
| private File getFile() { |
| Location user = Platform.getUserLocation(); |
| String path = user.getURL().getPath(); |
| File file = |
| new File( |
| path + File.separator + "org.eclipse.osee.ote.ui.test.manager" + File.separator + this.getClass().getName() + ".xml"); |
| file.getParentFile().mkdirs(); |
| return file; |
| } |
| |
| private void loadFromFile() { |
| keyValue.clear(); |
| Document document; |
| try { |
| document = Jaxp.readXmlDocument(getFile()); |
| NodeList viewList = document.getElementsByTagName("Pair"); |
| for (int index = 0; index < viewList.getLength(); index++) { |
| Node node = viewList.item(index); |
| if (node != null && node instanceof Element) { |
| Element element = (Element) node; |
| String key = Jaxp.getChildText(element, "Key"); |
| String value = Jaxp.getChildText(element, "Value"); |
| if (key != null && value != null && !key.equals("") && !value.equals("")) { |
| keyValue.put(key, value); |
| } |
| } |
| } |
| } catch (Exception ex) { |
| OseeLog.log(TestManagerPlugin.class, Level.SEVERE, ex); |
| } |
| } |
| |
| private void saveToFile() throws ParserConfigurationException, TransformerException, IOException { |
| Document document = Jaxp.newDocumentNamespaceAware(); |
| Element root = document.createElement("ValuePairs"); |
| document.appendChild(root); |
| |
| Iterator<String> it = keyValue.keySet().iterator(); |
| while (it.hasNext()) { |
| String key = it.next(); |
| String value = keyValue.get(key); |
| if (key != null && value != null && !key.equals("") && !value.equals("")) { |
| Element pair = document.createElement("Pair"); |
| |
| Element keyElement = document.createElement("Key"); |
| keyElement.setTextContent(key); |
| pair.appendChild(keyElement); |
| |
| Element valueElement = document.createElement("Value"); |
| valueElement.setTextContent(value); |
| pair.appendChild(valueElement); |
| root.appendChild(pair); |
| } |
| } |
| |
| Jaxp.writeXmlDocument(document, getFile(), Jaxp.getPrettyFormat()); |
| } |
| } |