1 package org.splat.ws_server.service.salome;
3 import java.io.BufferedWriter;
5 import java.io.FileOutputStream;
6 import java.io.FileWriter;
7 import java.io.IOException;
8 import java.sql.SQLException;
9 import java.util.Iterator;
10 import java.util.List;
12 import javax.activation.DataHandler;
13 import javax.activation.FileDataSource;
15 import org.apache.log4j.Logger;
16 import org.splat.service.ScenarioService;
17 import org.splat.service.dto.DocumentDTO;
18 import org.splat.service.dto.FileDTO;
19 import org.splat.service.dto.StepDTO;
20 import org.splat.service.technical.ProjectSettingsService;
21 import org.splat.service.technical.RepositoryService;
23 public class SimanSalomeServiceImpl implements SimanSalomeService {
26 * The logger for the service.
28 protected final static Logger LOG = Logger
29 .getLogger(SimanSalomeServiceImpl.class);
32 * The Scenario Service.
34 private ScenarioService _scenarioService;
37 * The Repository Service.
39 private RepositoryService _repositoryService;
42 * The Project Settings Service.
44 private ProjectSettingsService _projectSettingsService;
49 * @see org.splat.ws_server.service.salome.SimanSalomeService#createConfigFile(java.lang.Long, java.lang.Long, java.lang.Long)
52 public String createConfigFile(final Long studyId, final Long scenarioId,
56 //_projectSettingsService.configure("WebContent/conf/som.xml");
57 _projectSettingsService.configure("W:/Eclipse workspace/SIMAN/SIMAN_SRC/Workspace/Siman-WS/WebContent/conf/som.xml");
58 //ClassLoader loader = ClassLoader.getSystemClassLoader();
59 //URL pathToSOM = loader.getResource("WebContent/conf/som.xml");
61 /*ClassLoader cl = Thread.currentThread().getContextClassLoader();
62 URL testURL = ClassLoader.getSystemResource("conf/som.xml");
63 URL test2URL = ClassLoader.getSystemResource("som.xml");
64 String path = System.getProperty("user.dir");
66 File textfile = new File("w:/testfile.txt");
70 fstream = new FileWriter(textfile);
71 BufferedWriter out = new BufferedWriter(fstream);
73 out.write("testURL " + testURL.getPath());
75 out.write("testURL == null\n");
78 out.write("test2URL " + test2URL.getPath());
80 out.write("test2URL == null\n");
82 out.write("path = " + path);
85 } catch (IOException e) {
86 // TODO Auto-generated catch block
90 //_projectSettingsService.configure(ClassLoader.getSystemResource("som.xml").getPath());
91 //_projectSettingsService.configure(pathToSOM.getPath());
92 } catch (IOException ioException) {
93 LOG.debug("Sorry, IOException is throws", ioException);
94 } catch (SQLException sqlException) {
95 LOG.debug("Sorry, impossible to populate the database", sqlException);
98 List<StepDTO> listSteps = _scenarioService.getScenarioInfo(scenarioId);
100 File configFilePath = new File(_repositoryService.getRepositoryVaultPath() + "/SimanSalome/" + studyId.toString() + scenarioId.toString() + userId.toString());
101 configFilePath.mkdirs();
102 File configFile = new File(configFilePath + "/siman-salome.conf");
104 //build the result file.
107 fstream = new FileWriter(configFile);
108 BufferedWriter out = new BufferedWriter(fstream);
110 out.write("Study ID : " + studyId + "\n");
111 out.write("Scenario ID : " + scenarioId + "\n");
112 out.write("User ID : " + userId + "\n");
115 Iterator<StepDTO> stepIter = listSteps.iterator();
116 Iterator<DocumentDTO> docIter;
117 Iterator<FileDTO> fileIter;
120 DocumentDTO docValue;
124 for ( ; stepIter.hasNext(); ) {
125 stepValue = stepIter.next();
126 out.write("Activity : " + stepValue.getKey() + "\n");
127 out.write("Activity ID : " + stepValue.getNumber() + "\n");
128 out.write("SALOME module : " + stepValue.getModule() + "\n");
130 docIter = stepValue.getDocs().iterator();
132 for ( ; docIter.hasNext(); ) {
133 docValue = docIter.next();
134 out.write(" Document : " + docValue.getTitle() + "\n");
135 out.write(" Document ID: " + docValue.getId() + "\n");
137 fileIter = docValue.getFiles().iterator();
139 for ( ; fileIter.hasNext(); ) {
140 fileValue = fileIter.next();
141 if (fileValue.isResult() == false) {
142 out.write(" Source file : " + fileValue.getPath() + "\n");
144 out.write(" Result file : " + fileValue.getPath() + "\n");
147 out.write(" Automatic processing : " + fileValue.getProcessing() + "\n");
148 fileState = fileValue.getState();
149 if ((fileState == 'Y') || (fileState == 'N')) {
150 out.write(" State : file-actual\n");
151 } else if (fileState == 'O') {
152 out.write(" State : file-outdated\n");
161 } catch (IOException e) {
162 // TODO Auto-generated catch block
166 return configFile.getAbsolutePath();
173 * @see org.splat.ws_server.service.salome.SimanSalomeService#getFile(java.lang.String)
176 public DataHandler getFile(final String fileURL) {
177 FileDataSource dataSource = new FileDataSource(fileURL);
178 DataHandler fileDataHandler = new DataHandler(dataSource);
179 return fileDataHandler;
185 * @see org.splat.ws_server.service.salome.SimanSalomeService#putFile(javax.activation.DataHandler, java.io.File)
188 public void /*DataHandler*/ putFile(final DataHandler dataHandler, final String vaultURL) {
190 File vaultURLFile = new File(vaultURL);
191 File serverFilePath = vaultURLFile.getParentFile();
192 serverFilePath.mkdirs();
195 vaultURLFile.createNewFile();
196 } catch (IOException e) {
197 // TODO Auto-generated catch block
203 FileOutputStream outputStream = new FileOutputStream(vaultURLFile);
204 dataHandler.writeTo(outputStream);
206 outputStream.flush();
207 outputStream.close();
209 } catch (IOException e) {
210 // TODO Auto-generated catch block
214 /*FileDataSource fileDataSource = new FileDataSource(vaultURL);
215 DataHandler fileDataHandler = new DataHandler(fileDataSource);
216 return fileDataHandler;*/
221 * Get the scenarioService.
222 * @return the scenarioService
224 public ScenarioService getScenarioService() {
225 return _scenarioService;
229 * Set the scenarioService.
230 * @param scenarioService the scenarioService to set
232 public void setScenarioService(final ScenarioService scenarioService) {
233 _scenarioService = scenarioService;
238 * Get the repositoryService.
239 * @return the repositoryService
241 public RepositoryService getRepositoryService() {
242 return _repositoryService;
247 * Set the repositoryService.
248 * @param repositoryService the repositoryService to set
250 public void setRepositoryService(final RepositoryService repositoryService) {
251 _repositoryService = repositoryService;
256 * Get the projectSettingsService.
257 * @return the projectSettingsService
259 public ProjectSettingsService getProjectSettingsService() {
260 return _projectSettingsService;
265 * Set the projectSettingsService.
266 * @param projectSettingsService the projectSettingsService to set
268 public void setProjectSettingsService(
269 final ProjectSettingsService projectSettingsService) {
270 _projectSettingsService = projectSettingsService;