*
*/
-
package org.tizen.webuibuilder.snippet.manager;
import java.io.File;
import org.tizen.webuibuilder.snippet.model.ISnippet;
import org.tizen.webuibuilder.utility.ResourceUtil;
-
public class SnippetManager implements ISnippetManager {
- private Map<Integer, ISnippet> snippets = null;
- private Logger logger = LoggerFactory.getLogger(getClass());
-
- public SnippetManager() {
- super();
- snippets = new HashMap<Integer, ISnippet>();
- load();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#getSnippets()
- */
- @Override
- public Collection<ISnippet> getSnippets() {
- return snippets.values();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#create(org.tizen.webuibuilder
- * .feature.snippet.model.ISnippet)
- */
- @Override
- public boolean create(ISnippet snippet) {
- // Create ID
- String id = createId();
- snippet.setId(id);
-
- // Save
- String path = getSnippetPath(snippet);
- SnippetLoader snippetLoader = new SnippetLoader();
- snippetLoader.snippet = snippet;
- if (!snippetLoader.save(path)) {
- return false;
- }
- Integer key = getKey(snippet);
- snippets.put(key, snippet);
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#remove(org.tizen.webuibuilder
- * .feature.snippet.model.ISnippet)
- */
- @Override
- public boolean remove(ISnippet snippet) {
- String path = getSnippetPath(snippet);
- File file = new File(path);
- if (!FileUtil.recursiveDelete(file)) {
- return false;
- }
- Integer key = getKey(snippet);
- snippets.remove(key);
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#rename(org.tizen.webuibuilder
- * .feature.snippet.model.ISnippet, java.lang.String)
- */
- @Override
- public boolean rename(ISnippet snippet, String name) {
- // exist in collection ?
- Integer key = getKey(snippet);
- ISnippet selectedSnippet = snippets.get(key);
- if (selectedSnippet == null) {
- return false;
- }
- // Remove old snippet
- if (!remove(selectedSnippet)) {
- return false;
- }
- // Rename
- snippet.setName(name);
- // Create new snippet
- if (!create(snippet)) {
- return false;
- }
- return true;
- }
-
- public boolean importSnippet(String path) {
- SnippetLoader snippetLoader = new SnippetLoader();
- ISnippet snippet = snippetLoader.load(path);
- if (snippet == null) { // Load snippet fail
- return false;
- }
- if (!create(snippet)) { // Create snippet fail
- return false;
- }
- return true;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#importSnippet(org.tizen.
- * webuibuilder.feature.snippet.model.ISnippet)
- */
- @Override
- public boolean importSnippet(ISnippet snippet) {
- return create(snippet);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#exportSnippet(org.tizen.
- * webuibuilder.feature.snippet.model.ISnippet)
- */
- @Override
- public boolean exportSnippet(ISnippet snippet, String path) {
- // Remove ID
- snippet.setId("");
- SnippetLoader snippetLoader = new SnippetLoader();
- snippetLoader.snippet = snippet;
- if (!snippetLoader.save(path + File.separator + snippet.getName())) {
- return false;
- }
- return true;
- }
-
- private String getDefaultPath() {
- String path = ResourceUtil.getAbsolutePath(InternalMessages.SNIPPET_FOLDER_PATH);
- return path;
- }
-
- private String getSnippetPath(ISnippet snippet) {
- String path = getDefaultPath() + File.separator + snippet.getId() + "." + snippet.getName();
- return path;
- }
-
- private void load() {
- snippets = load(getDefaultPath());
- }
-
- private Map<Integer, ISnippet> load(String path) {
- File folder = new File(path);
- if (!folder.exists()) {
- return null;
- }
- if (!folder.isDirectory()) {
- return null;
- }
-
- Map<Integer, ISnippet> snippets = new HashMap<Integer, ISnippet>();
- File[] files = folder.listFiles();
- for (File file : files) {
- // snippet directory has file
- if (!file.isDirectory()) {
- logger.warn("snippet directory has file");
- continue;
- }
-
- String snippetPath = path + IPath.SEPARATOR + file.getName();
- ISnippetLoader loader = new SnippetLoader();
- // snippet load fail
- ISnippet snippet = loader.load(snippetPath);
- if (snippet == null) {
- logger.warn("snippet load fail");
- continue;
- }
-
- // snippet id consistency broken
- Integer key = getKey(snippet);
- if (snippets.containsKey(key)) {
- logger.warn("snippet id consistency broken");
- return null;
- }
- snippets.put(key, snippet);
- }
- return snippets;
- }
-
- protected Integer getKey(ISnippet snippet) {
- return Integer.parseInt(snippet.getId());
- }
-
- protected String createId() {
- // initialize id
- Integer id = Integer.valueOf(1);
- while (snippets.containsKey(id)) {
- id = id + 1;
- }
- return id.toString();
- }
+ private Map<Integer, ISnippet> snippets = null;
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ public SnippetManager() {
+ super();
+ snippets = new HashMap<Integer, ISnippet>();
+ load();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#getSnippets
+ * ()
+ */
+ @Override
+ public Collection<ISnippet> getSnippets() {
+ if (snippets == null) {
+ return null;
+ }
+
+ return snippets.values();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#create
+ * (org.tizen.webuibuilder .feature.snippet.model.ISnippet)
+ */
+ @Override
+ public boolean create(ISnippet snippet) {
+ // Create ID
+ String id = createId();
+ snippet.setId(id);
+
+ // Save
+ String path = getSnippetPath(snippet);
+ SnippetLoader snippetLoader = new SnippetLoader();
+ snippetLoader.snippet = snippet;
+ if (!snippetLoader.save(path)) {
+ return false;
+ }
+ Integer key = getKey(snippet);
+ snippets.put(key, snippet);
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#remove
+ * (org.tizen.webuibuilder .feature.snippet.model.ISnippet)
+ */
+ @Override
+ public boolean remove(ISnippet snippet) {
+ String path = getSnippetPath(snippet);
+ File file = new File(path);
+ if (!FileUtil.recursiveDelete(file)) {
+ return false;
+ }
+ Integer key = getKey(snippet);
+ snippets.remove(key);
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#rename
+ * (org.tizen.webuibuilder .feature.snippet.model.ISnippet,
+ * java.lang.String)
+ */
+ @Override
+ public boolean rename(ISnippet snippet, String name) {
+ // exist in collection ?
+ Integer key = getKey(snippet);
+ ISnippet selectedSnippet = snippets.get(key);
+ if (selectedSnippet == null) {
+ return false;
+ }
+ // Remove old snippet
+ if (!remove(selectedSnippet)) {
+ return false;
+ }
+ // Rename
+ snippet.setName(name);
+ // Create new snippet
+ if (!create(snippet)) {
+ return false;
+ }
+ return true;
+ }
+
+ public boolean importSnippet(String path) {
+ SnippetLoader snippetLoader = new SnippetLoader();
+ ISnippet snippet = snippetLoader.load(path);
+ if (snippet == null) { // Load snippet fail
+ return false;
+ }
+ if (!create(snippet)) { // Create snippet fail
+ return false;
+ }
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#importSnippet
+ * (org.tizen. webuibuilder.feature.snippet.model.ISnippet)
+ */
+ @Override
+ public boolean importSnippet(ISnippet snippet) {
+ return create(snippet);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.tizen.webuibuilder.feature.snippet.manager.ISnippetManager#exportSnippet
+ * (org.tizen. webuibuilder.feature.snippet.model.ISnippet)
+ */
+ @Override
+ public boolean exportSnippet(ISnippet snippet, String path) {
+ // Remove ID
+ snippet.setId("");
+ SnippetLoader snippetLoader = new SnippetLoader();
+ snippetLoader.snippet = snippet;
+ if (!snippetLoader.save(path + File.separator + snippet.getName())) {
+ return false;
+ }
+ return true;
+ }
+
+ private String getDefaultPath() {
+ String path = ResourceUtil
+ .getAbsolutePath(InternalMessages.SNIPPET_FOLDER_PATH);
+ return path;
+ }
+
+ private String getSnippetPath(ISnippet snippet) {
+ String path = getDefaultPath() + File.separator + snippet.getId() + "."
+ + snippet.getName();
+ return path;
+ }
+
+ private void load() {
+ snippets = load(getDefaultPath());
+ }
+
+ private Map<Integer, ISnippet> load(String path) {
+ File folder = new File(path);
+ if (!folder.exists()) {
+ return null;
+ }
+ if (!folder.isDirectory()) {
+ return null;
+ }
+
+ Map<Integer, ISnippet> snippets = new HashMap<Integer, ISnippet>();
+ File[] files = folder.listFiles();
+ for (File file : files) {
+ // snippet directory has file
+ if (!file.isDirectory()) {
+ logger.warn("snippet directory has file");
+ continue;
+ }
+
+ String snippetPath = path + IPath.SEPARATOR + file.getName();
+ ISnippetLoader loader = new SnippetLoader();
+ // snippet load fail
+ ISnippet snippet = loader.load(snippetPath);
+ if (snippet == null) {
+ logger.warn("snippet load fail");
+ continue;
+ }
+
+ // snippet id consistency broken
+ Integer key = getKey(snippet);
+ if (snippets.containsKey(key)) {
+ logger.warn("snippet id consistency broken");
+ return null;
+ }
+ snippets.put(key, snippet);
+ }
+ return snippets;
+ }
+
+ protected Integer getKey(ISnippet snippet) {
+ return Integer.parseInt(snippet.getId());
+ }
+
+ protected String createId() {
+ // initialize id
+ Integer id = Integer.valueOf(1);
+ while (snippets.containsKey(id)) {
+ id = id + 1;
+ }
+ return id.toString();
+ }
}