972ddd65a8a9a499b445971b03482268aa0c7352
[idea/community.git] / jps / model-serialization / src / org / jetbrains / jps / model / serialization / impl / JpsSerializationManagerImpl.java
1 /*
2  * Copyright 2000-2013 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.jetbrains.jps.model.serialization.impl;
17
18 import org.jetbrains.annotations.NotNull;
19 import org.jetbrains.annotations.Nullable;
20 import org.jetbrains.jps.model.JpsElementFactory;
21 import org.jetbrains.jps.model.JpsGlobal;
22 import org.jetbrains.jps.model.JpsModel;
23 import org.jetbrains.jps.model.JpsProject;
24 import org.jetbrains.jps.model.serialization.*;
25
26 import java.io.IOException;
27 import java.util.Map;
28
29 public class JpsSerializationManagerImpl extends JpsSerializationManager {
30   @NotNull
31   @Override
32   public JpsModel loadModel(@NotNull String projectPath, @Nullable String optionsPath, boolean loadUnloadedModules)
33     throws IOException {
34     JpsModel model = JpsElementFactory.getInstance().createModel();
35     if (optionsPath != null) {
36       JpsGlobalLoader.loadGlobalSettings(model.getGlobal(), optionsPath);
37     }
38     Map<String, String> pathVariables = JpsModelSerializationDataService.computeAllPathVariables(model.getGlobal());
39     JpsProjectLoader.loadProject(model.getProject(), pathVariables, projectPath, loadUnloadedModules);
40     return model;
41   }
42
43   @NotNull
44   @Override
45   public JpsProject loadProject(@NotNull String projectPath, @NotNull Map<String, String> pathVariables) throws IOException {
46     JpsModel model = JpsElementFactory.getInstance().createModel();
47     JpsProjectLoader.loadProject(model.getProject(), pathVariables, projectPath);
48     return model.getProject();
49   }
50
51   @Override
52   public void saveGlobalSettings(@NotNull JpsGlobal global, @NotNull String optionsPath) throws IOException {
53     JpsGlobalElementSaver.saveGlobalElement(global, optionsPath);
54   }
55 }