summaryrefslogtreecommitdiffstats
path: root/rba.tool.core/src/rba/tool/core/util/SelectionUtil.java
blob: e6093b7d8e7519992bf4b38d8adc8c1965f37aa9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
package rba.tool.core.util;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;

public class SelectionUtil {

    public static final String TEST_FILE_NAME = "testinformation";

    public static final String TEST_CASE_FOLDER_NAME = "testcase";

    public static final String TEST_COVERAGE_FOLDER_NAME = "coverage";

    public static final String TEST_LOG_FOLDER_NAME = "testlog";

    public static final String TEST_RESULT_FOLDER_NAME = "testresult";

    /**
     * get testresult folder in revision folder from selected item
     * @param file
     * @return testcase folder
     */
    public static IFolder getRevResultFolder(Object object) {
        return getAndCreateFolderInTestRevFolder(object, TEST_RESULT_FOLDER_NAME);
    }

    /**
     * get testlog folder in revision folder from selected item
     * @param file
     * @return testcase folder
     */
    public static IFolder getRevLogFolder(Object object) {
        return getAndCreateFolderInTestRevFolder(object, TEST_LOG_FOLDER_NAME);
    }

    /**
     * get coverage folder in revision folder from selected item
     * @param file
     * @return testcase folder
     */
    public static IFolder getRevCoverageFolder(Object object) {
        return getAndCreateFolderInTestRevFolder(object, TEST_COVERAGE_FOLDER_NAME);
    }

    /**
     * get testcase folder in revision folder from selected item
     * @param file
     * @return testcase folder
     */
    public static IFolder getRevTestcaseFolder(Object object) {
        return getAndCreateFolderInTestRevFolder(object, TEST_CASE_FOLDER_NAME);
    }

    public static IFolder getAndCreateFolderInTestRevFolder(Object object, String foldername) {
        IFolder folder = getRevFolder(object);
        if (folder != null) {
            IFolder testcase = folder.getFolder(foldername);
            if (!testcase.exists()) {
                try {
                    testcase.create(true, true, null);
                } catch (CoreException e) {
                    throw new RuntimeException(e);
                }
            }
            return testcase;
        }
        return null;
    }

    /**
     * get revision folder of selected file
     * @param file
     * @return
     */
    public static IFolder getRevFolder(Object object) {
        try {
            if (object instanceof ISelection) {
                ISelection selection = (ISelection) object;
                if (selection instanceof IStructuredSelection) {
                    IStructuredSelection structuredSelection = (IStructuredSelection) selection;
                    Object element = structuredSelection.getFirstElement();
                    if (element instanceof IResource) {
                        return getRevFolder((IResource) element);
                    }
                }
            } else if (object instanceof IResource) {
                if (object instanceof IFolder) {
                    IFolder f = (IFolder) object;
                    IResource[] resources = f.members();
                    for (IResource res : resources) {
                        if (res instanceof IFile) {
                            IFile file = (IFile) res;
                            if (file.getName().equals(TEST_FILE_NAME)) {
                                return f;
                            }
                        }
                    }
                } else if (object instanceof IFile) {
                    IFolder parent = (IFolder) ((IFile) object).getParent();
                    return getRevFolder(parent);
                }
                IResource r = (IResource) object;
                return getRevFolder(r.getParent());

                //
                // IFolder f = null;
                // if (object instanceof IFile) {
                // IContainer parent = ((IFile) object).getParent();
                // if (parent instanceof IFolder) {
                // f = (IFolder) parent;
                // }
                // } else
                //
                // if (f.getParent() instanceof IFolder) {
                // return getRevFolder((IFolder) f.getParent());
                // }
            }
        } catch (CoreException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * to get only 2 selected revision file
     * @param object
     * @return
     */
    public static IFolder getRevCompareFolder(Object object) {
        try {
            if (object instanceof ISelection) {
                ISelection selection = (ISelection) object;
                if (selection instanceof IStructuredSelection) {
                    IStructuredSelection structuredSelection = (IStructuredSelection) selection;
                    if (structuredSelection.size() == 2) {
                        Object element = structuredSelection.getFirstElement();
                        if (element instanceof IResource) {
                            return getRevCompareFolder((IResource) element);
                        }
                    }
                }
            } else if (object instanceof IResource) {
                if (object instanceof IFolder) {
                    IFolder f = (IFolder) object;
                    IResource[] resources = f.members();
                    for (IResource res : resources) {
                        if (res instanceof IFile) {
                            IFile file = (IFile) res;
                            if (file.getName().equals(TEST_FILE_NAME)) {
                                return f;
                            }
                        }
                    }
                }

            }
        } catch (CoreException e) {
            e.printStackTrace();
        }
        return null;
    }
}