4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
7 * Shihyun Kim <shihyun.kim@samsung.com>
8 * Yongsung kim <yongsung1.kim@samsung.com>
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
14 * http://www.apache.org/licenses/LICENSE-2.0
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
27 package org.tizen.installmanager.core;
29 import java.io.IOException;
30 import java.net.MalformedURLException;
32 import java.util.LinkedHashMap;
34 import org.tizen.installmanager.lib.Log;
35 import org.tizen.installmanager.pkg.lib.PackageManager;
36 import org.tizen.installmanager.pkg.model.ConfigFile;
37 import org.tizen.installmanager.pkg.model.PackageSet;
40 * This class can manages extension information
42 * @author Shihyun Kim <shihyun.kim@samsung.com>
45 public class SDKExtensionInfo {
47 private static SDKExtensionInfo sdkExtensionInfo = null;
49 LinkedHashMap<String, String> userExtensionRepositories = new LinkedHashMap<String, String>();
50 LinkedHashMap<String, String> builtInExtensionRepositories = new LinkedHashMap<String, String>();
53 private SDKExtensionInfo() {
57 public boolean add(String name, String packageRepo) {
58 if (name == null || !checkPackageRepo(packageRepo)) {
62 if (contains(packageRepo)) {
65 userExtensionRepositories.put(packageRepo, name);
70 public boolean contains(String packageRepo) {
71 return userExtensionRepositories.containsKey(packageRepo);
74 public boolean containsBuiltIn(String packageRepo) {
75 return builtInExtensionRepositories.containsKey(packageRepo);
78 public void remove(String packageRepo) {
79 if (contains(packageRepo)) {
80 userExtensionRepositories.remove(packageRepo);
85 ConfigFile confFile = Config.getInstance().getConfigFile();
87 confFile.setExtensionServer(userExtensionRepositories.toString());
89 Config.getInstance().saveConfig();
93 String extensionInfo = Config.getInstance().getConfigFile().getExtensionServer();
94 String builtInExtensionInfo = Config.getInstance().getConfigFile().getBuiltInExtensionServer();
96 builtInExtensionRepositories = parseLocationInformationToMap(builtInExtensionInfo);
97 userExtensionRepositories = parseLocationInformationToMap(extensionInfo);
100 public boolean checkPackageRepo(String packageRepo) {
102 new URL(packageRepo);
104 } catch (MalformedURLException e) {
105 Log.err("Extension package server is not URL format.(" + packageRepo +")");
110 private LinkedHashMap<String, String> parseLocationInformationToMap(String info) {
111 LinkedHashMap<String, String> extensionInformation = new LinkedHashMap<String, String>();
112 if (info.startsWith("{")) {
113 info = info.substring(1);
116 if (info.endsWith("}")) {
117 info = info.substring(0, info.length() -1);
120 String[] properties = info.split(",");
122 for(String property : properties) {
123 String[] nameValue = property.split("=");
125 if (nameValue.length == 2) {
126 extensionInformation.put(nameValue[0], nameValue[1]);
129 return extensionInformation;
132 public PackageSet getExtensionPackages() {
133 PackageManager pm = PackageManager.getInstance();
136 return PackageSet.EMPTY;
139 //Get all extension repositories.
140 LinkedHashMap<String, String> extensionRepositories = new LinkedHashMap<String, String>();
141 extensionRepositories.putAll(builtInExtensionRepositories);
142 extensionRepositories.putAll(userExtensionRepositories);
144 pm.loadExtensionPackages(extensionRepositories.keySet());
145 return pm.getRootMetaPackagesOfExtensionServer();
147 } catch (IOException e) {
149 return PackageSet.EMPTY;
154 public LinkedHashMap<String, String> getExtensionRepositories() {
155 return userExtensionRepositories;
158 public LinkedHashMap<String, String> getBuiltInExtensionRepositories() {
159 return builtInExtensionRepositories;
162 public static SDKExtensionInfo getInstance() {
163 if (sdkExtensionInfo == null) {
164 sdkExtensionInfo = new SDKExtensionInfo();
167 return sdkExtensionInfo;