]> git.uio.no Git - ifi-stolz-refaktor.git/blame - case-study/jdt-after/ui/org/eclipse/jdt/internal/ui/CompatibilityTemplateStore.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / ui / org / eclipse / jdt / internal / ui / CompatibilityTemplateStore.java
CommitLineData
1b2798f6
EK
1/*******************************************************************************
2 * Copyright (c) 2000, 2011 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11package org.eclipse.jdt.internal.ui;
12
13import java.io.IOException;
14
15import org.eclipse.jface.preference.IPreferenceStore;
16
17import org.eclipse.jface.text.templates.ContextTypeRegistry;
18import org.eclipse.jface.text.templates.Template;
19import org.eclipse.jface.text.templates.persistence.TemplatePersistenceData;
20import org.eclipse.jface.text.templates.persistence.TemplateStore;
21
22import org.eclipse.ui.editors.text.templates.ContributionTemplateStore;
23
24
25/**
26 * for compatibility only - don't use
27 */
28public final class CompatibilityTemplateStore extends ContributionTemplateStore {
29
30
31 public org.eclipse.jdt.internal.corext.template.java.TemplateSet fLegacySet;
32
33 public CompatibilityTemplateStore(ContextTypeRegistry registry, IPreferenceStore store, String key, org.eclipse.jdt.internal.corext.template.java.TemplateSet legacySet) {
34 super(registry, store, key);
35 fLegacySet= legacySet;
36 }
37
38 @Override
39 public void load() throws IOException {
40 super.load();
41
42 if (fLegacySet != null) {
43
44 fLegacySet.generated_1607121912083686967(this);
45
46 save();
47 fLegacySet= null;
48 }
49 }
50
51 public static TemplatePersistenceData findSimilarTemplate(TemplatePersistenceData[] datas, Template template, boolean isCodeTemplates) {
52 for (int i= 0; i < datas.length; i++) {
53 TemplatePersistenceData data= datas[i];
54 Template orig= data.getTemplate();
55 if (isSimilar(template, orig, isCodeTemplates))
56 return data;
57 }
58
59 return null;
60 }
61
62 private static boolean isSimilar(Template t, Template orig, boolean isCodeTemplates) {
63 return orig.getName().equals(t.getName()) && orig.getContextTypeId().equals(t.getContextTypeId())
64 && (isCodeTemplates || orig.getDescription().equals(t.getDescription())); // only use description for templates (for, while...)
65 }
66
67 public boolean isCodeTemplates() {
68 return fLegacySet instanceof org.eclipse.jdt.internal.corext.template.java.CodeTemplates;
69 }
70
71 /**
72 * Removes any duplicates from a template store. Duplicate user added templates
73 * are copied over their contributed siblings. If isCodeTemplates is true,
74 * any user added templates are then removed.
75 *
76 * @param store
77 * @param isCodeTemplates
78 */
79 public static void pruneDuplicates(TemplateStore store, boolean isCodeTemplates) {
80 TemplatePersistenceData[] datas= store.getTemplateData(true);
81 for (int i= datas.length - 1; i >= 0; i--) {
82 TemplatePersistenceData data= datas[i];
83 if (data.isUserAdded()) {
84 // find a contributed template that is similar and check it
85 TemplatePersistenceData similar= findSimilarTemplate(datas, data.getTemplate(), isCodeTemplates);
86 if (similar != data && !similar.isUserAdded()) {
87 similar.setTemplate(data.getTemplate());
88 store.delete(data);
89 }
90 }
91 }
92
93 if (isCodeTemplates) {
94 datas= store.getTemplateData(true);
95 for (int i= datas.length - 1; i >= 0; i--) {
96 if (datas[i].isUserAdded())
97 store.delete(datas[i]);
98 }
99 }
100 }
101}