01: // This file is part of KeY - Integrated Deductive Software Design
02: // Copyright (C) 2001-2007 Universitaet Karlsruhe, Germany
03: // Universitaet Koblenz-Landau, Germany
04: // Chalmers University of Technology, Sweden
05: //
06: // The KeY system is protected by the GNU General Public License.
07: // See LICENSE.TXT for details.
08: //
09: //
10:
11: package de.uka.ilkd.key.casetool.together;
12:
13: import java.io.File;
14: import java.net.URL;
15: import java.util.Map;
16: import java.util.WeakHashMap;
17:
18: import tudresden.ocl.check.types.ModelFacade;
19: import de.uka.ilkd.key.casetool.HashMapOfClassifier;
20: import de.uka.ilkd.key.casetool.ModelManager;
21: import de.uka.ilkd.key.casetool.OCLModelFacade;
22: import de.uka.ilkd.key.casetool.UMLOCLModel;
23: import de.uka.ilkd.key.gui.ModelSourceSettings;
24: import de.uka.ilkd.key.gui.configuration.ProofSettings;
25: import de.uka.ilkd.key.util.KeYResourceManager;
26:
27: /**
28: * @deprecated
29: */
30: public class TogetherModelManager implements ModelManager {
31:
32: public static final TogetherModelManager INSTANCE = new TogetherModelManager();
33:
34: private static Map models = new WeakHashMap();
35:
36: private TogetherModelManager() {
37: }
38:
39: public ModelFacade getModelFacade(String location, String modelId) {
40: ModelFacade res = (ModelFacade) models.get(modelId);
41: if (res != null)
42: return res;
43: ModelSourceSettings mss = ProofSettings.DEFAULT_SETTINGS
44: .getModelSourceSettings();
45: if ("0".equals(mss.getModelSource())) {
46: String xmifileURL = "file:" + location;
47: // copying the uml.dtd if needed
48: String dtdTargetPath = (new File(location)).getParent();
49: String resourceName = "uml.dtd";
50: String dtdTargetName = resourceName;
51: KeYResourceManager.getManager().copyIfNotExists(
52: TogetherModelManager.class, resourceName,
53: dtdTargetPath + File.separator + dtdTargetName);
54: if (!(new File(location)).isFile()) {
55: throw new RuntimeException(
56: "XMI file "
57: + location
58: + " does not exist.\n"
59: + "Please use File | Export | Model to XMI File "
60: + "\nto create the XMI model file in the project directory."
61: + "\nAs alternative, you can use the TogetherCC model "
62: + "directly by "
63: + "\nchoosing `TogetherCC data? structure as UML model source"
64: + "\nfrom the KeY menu.");
65: }
66: URL xmiURL = null;
67: try {
68: xmiURL = new URL(xmifileURL);
69: } catch (java.net.MalformedURLException e) {
70: throw new IllegalArgumentException(
71: "XMI file location wrong");
72: }
73: try {
74: res = tudresden.ocl.check.types.xmifacade.XmiParser
75: .createModel(xmiURL, xmifileURL);
76: } catch (org.xml.sax.SAXException e) {
77: throw new IllegalArgumentException("Error in XMI file "
78: + location + "\n" + e.getMessage());
79: } catch (java.io.IOException e) {
80: throw new IllegalArgumentException(
81: "Error reading model file " + "\n"
82: + e.getMessage());
83: }
84:
85: } else {
86: UMLOCLModel model = new UMLOCLTogetherModel(null);
87: HashMapOfClassifier classifiers = model
88: .getUMLOCLClassifiers();
89: res = new OCLModelFacade(classifiers);
90: }
91: if (modelId != null)
92: models.put(modelId, res);
93: return res;
94: }
95:
96: }
|