1 /*******************************************************************************
2 * Copyright (c) 2013 Association for Decentralized Information Management
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.graphfile.hack;
15 import java.util.ArrayList;
16 import java.util.List;
18 import org.eclipse.core.runtime.IPath;
19 import org.simantics.Simantics;
20 import org.simantics.db.ReadGraph;
21 import org.simantics.db.Resource;
22 import org.simantics.db.common.request.ReadRequest;
23 import org.simantics.db.exception.DatabaseException;
24 import org.simantics.graphfile.ontology.GraphFileResource;
25 import org.simantics.layer0.Layer0;
27 public class GraphPath implements IPath {
29 private GraphFile file;
30 List<String> path = new ArrayList<String>();
32 public GraphPath(GraphFile f) {
35 Simantics.getSession().syncRequest(new ReadRequest() {
38 public void run(ReadGraph graph) throws DatabaseException {
39 Layer0 l0 = Layer0.getInstance(graph);
40 GraphFileResource gf = GraphFileResource.getInstance(graph);
41 Resource fileResource = file.getFileResource();
42 Resource t = fileResource;
44 t = graph.getPossibleObject(t, gf.PartOfSystemResource);
46 path.add(0, (String)graph.getRelatedValue(t, l0.HasName));
54 } catch (DatabaseException e) {
55 throw new RuntimeException("Could not evaluate graph path",e);
60 public IPath addFileExtension(String extension) {
61 // TODO Auto-generated method stub
66 public IPath addTrailingSeparator() {
67 // TODO Auto-generated method stub
72 public IPath append(String path) {
73 // TODO Auto-generated method stub
78 public IPath append(IPath path) {
79 // TODO Auto-generated method stub
84 public String getDevice() {
85 return "SimanticsGraph";
89 public String getFileExtension() {
90 // TODO Auto-generated method stub
95 public boolean hasTrailingSeparator() {
96 // TODO Auto-generated method stub
101 public boolean isAbsolute() {
102 // TODO Auto-generated method stub
107 public boolean isEmpty() {
108 // TODO Auto-generated method stub
113 public boolean isPrefixOf(IPath anotherPath) {
114 // TODO Auto-generated method stub
119 public boolean isRoot() {
120 // TODO Auto-generated method stub
125 public boolean isUNC() {
126 // TODO Auto-generated method stub
131 public boolean isValidPath(String path) {
132 // TODO Auto-generated method stub
137 public boolean isValidSegment(String segment) {
138 // TODO Auto-generated method stub
143 public String lastSegment() {
144 // TODO Auto-generated method stub
149 public IPath makeAbsolute() {
154 public IPath makeRelative() {
159 public IPath makeRelativeTo(IPath base) {
160 // TODO Auto-generated method stub
165 public IPath makeUNC(boolean toUNC) {
166 // TODO Auto-generated method stub
171 public int matchingFirstSegments(IPath anotherPath) {
172 // TODO Auto-generated method stub
177 public IPath removeFileExtension() {
178 // TODO Auto-generated method stub
183 public IPath removeFirstSegments(int count) {
184 // TODO Auto-generated method stub
189 public IPath removeLastSegments(int count) {
190 // TODO Auto-generated method stub
195 public IPath removeTrailingSeparator() {
196 // TODO Auto-generated method stub
201 public String segment(int index) {
202 // TODO Auto-generated method stub
207 public int segmentCount() {
208 // TODO Auto-generated method stub
213 public String[] segments() {
214 // TODO Auto-generated method stub
219 public IPath setDevice(String device) {
220 // TODO Auto-generated method stub
225 public File toFile() {
226 // TODO Auto-generated method stub
227 return new GraphJavaFile(file.getFileResource());
231 public String toOSString() {
232 // TODO Auto-generated method stub
237 public String toPortableString() {
238 // TODO Auto-generated method stub
243 public IPath uptoSegment(int count) {
244 // TODO Auto-generated method stub
249 public Object clone() {
254 public String toString() {
256 for (String s : path) {
257 name+= s + SEPARATOR;
259 name += file.getName();