source: gs3-extensions/mat/trunk/src/org/greenstone/admin/guiext/MatExtensionInstallation.java@ 21921

Last change on this file since 21921 was 21921, checked in by sjm84, 14 years ago

Moving these file to here temporarily, most of them will be deleted later

File size: 6.1 KB
Line 
1package org.greenstone.admin.guiext.mat;
2
3import java.awt.BorderLayout;
4import java.awt.Color;
5import java.awt.Component;
6import java.awt.Dimension;
7import java.awt.GridLayout;
8
9import java.awt.event.ActionEvent;
10import java.awt.event.ActionListener;
11import java.awt.event.ItemEvent;
12import java.awt.event.ItemListener;
13import java.io.BufferedReader;
14import java.io.BufferedWriter;
15import java.io.File;
16import java.io.FileInputStream;
17import java.io.FileOutputStream;
18import java.io.IOException;
19import java.io.InputStreamReader;
20import java.io.OutputStreamWriter;
21import java.io.Writer;
22
23import javax.swing.*;
24import javax.xml.parsers.DocumentBuilder;
25import javax.xml.parsers.DocumentBuilderFactory;
26import javax.xml.transform.OutputKeys;
27import javax.xml.transform.Transformer;
28import javax.xml.transform.TransformerFactory;
29import javax.xml.transform.dom.DOMSource;
30import javax.xml.transform.stream.StreamResult;
31
32import org.w3c.dom.Document;
33import org.w3c.dom.Element;
34import org.w3c.dom.Node;
35import org.w3c.dom.NodeList;
36import org.w3c.dom.Text;
37
38import java.text.SimpleDateFormat;
39import java.util.ArrayList;
40import java.util.Calendar;
41import java.util.Iterator;
42import java.util.Properties;
43import java.util.Set;
44
45import java.awt.BorderLayout;
46import javax.swing.JFrame;
47import javax.swing.JScrollPane;
48import javax.swing.JTextArea;
49import javax.swing.text.BadLocationException;
50import javax.swing.text.DefaultStyledDocument;
51import javax.swing.text.SimpleAttributeSet;
52import javax.swing.text.Style;
53import javax.swing.text.StyleConstants;
54import javax.swing.text.StyleContext;
55import javax.swing.text.StyledDocument;
56import java.io.DataInputStream;
57import java.io.*;
58import java.awt.Insets;
59
60import org.greenstone.gsdl3.util.GSPath;
61import org.greenstone.gsdl3.util.GlobalProperties;
62
63import org.greenstone.admin.guiext.ExtPane;
64import org.greenstone.admin.GAI;
65
66class MatExtensionInstallation extends Thread {
67
68 Mat adaptee;
69
70 public MatExtensionInstallation (Mat m){
71 adaptee = m;
72 }
73
74 public void run() {
75 try{
76
77 String gsdl3Home = GAI.getGSDL3Home();
78 String fileSeparator = File.separator;
79
80 File wd = new File(adaptee.extension_path);
81 Process proc = null;
82
83 try {
84
85 if(adaptee.os_type.toLowerCase().indexOf("windows")!=-1){
86 String[] arrays = {"ant.bat", "compile"};
87 proc = Runtime.getRuntime().exec(arrays, null, wd);
88 }
89
90 else{
91 proc = Runtime.getRuntime().exec("ant compile", null, wd);
92 }
93
94 BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
95 BufferedReader errInput = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
96 String s= "";
97
98 ExtPane.message_textarea.setText("");
99
100 while ((s = stdInput.readLine()) != null) {
101 ExtPane.message_textarea.append(s+"\n");
102 ExtPane.message_textarea.setSelectionEnd(ExtPane.message_textarea.getDocument().getLength());
103 }
104
105 while ((s = errInput.readLine()) != null) {
106 ExtPane.message_textarea.append(s+"\n");
107 JOptionPane.showMessageDialog(new JFrame(),adaptee.InstallErrorMsg);
108 return;
109 }
110
111 ExtPane.message_textarea.append(adaptee.InstallCompleteMsg+"\n");
112
113 Calendar cl;
114 SimpleDateFormat sdf;
115 cl=Calendar.getInstance();
116 sdf = new SimpleDateFormat("dd/MMM/yyyy 'at' HH:mm:ss z 'GMT'Z");
117 String timestamp = sdf.format(cl.getTime());
118
119 ExtPane.message_textarea.append(timestamp);
120 proc.waitFor();
121 JTextPaneStyle msgpane = new JTextPaneStyle(adaptee.extension_path,adaptee.web_xml_path);
122 msgpane.display();
123
124 ExtPane.updateExtensionContentPane();
125
126 } catch (Exception e) {
127 JOptionPane.showMessageDialog(new JFrame(),adaptee.InstallErrorMsg+" \"Ant\" could not be run.\n Please run gs3-setup");
128 }
129
130 }catch(Exception ex){
131 ex.printStackTrace();
132 }
133 }
134}
135
136
137class JTextPaneStyle implements ActionListener{
138
139 private static String message ="";
140
141 JFrame frame = new JFrame("The extension (Mat) has been installed.");
142 private String filePath;
143 private String webPath;
144
145 public JTextPaneStyle (String path, String web_xml_path){
146 filePath = path + "README.txt";
147 webPath = web_xml_path;
148 loadReadMe();
149 }
150
151 public void loadReadMe(){
152 message = new String();
153
154 try{
155
156 FileInputStream fstream = new FileInputStream(filePath);
157 DataInputStream in = new DataInputStream(fstream);
158 BufferedReader br = new BufferedReader(new InputStreamReader(in));
159 String strLine;
160
161 while ((strLine = br.readLine()) != null) {
162 if(strLine.indexOf("web@xml@path")!=-1){
163 webPath = webPath.replaceAll("\\\\","@");
164 strLine = strLine.replaceAll("web@xml@path",webPath);
165 strLine = strLine.replaceAll("@","\\\\");
166 }
167 message = message+ "\n "+ strLine;
168 }
169
170 in.close();
171 }catch (Exception e){
172 System.err.println("Error: " + e.getMessage());
173 }
174 }
175
176 public void display() {
177
178 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
179 frame.setSize(new Dimension(550, 450));
180 JPanel mainPane = new JPanel(new BorderLayout());
181 JTextArea textPane = new JTextArea(message);
182 textPane.setEditable(false);
183 textPane.setLineWrap(true);
184 textPane.setWrapStyleWord(true);
185 textPane.setMargin(new Insets(0,ExtPane.left_padding,0,0));
186 JScrollPane scrollPane = new JScrollPane(textPane);
187 mainPane.add(scrollPane,BorderLayout.CENTER);
188 JPanel button_pane = new JPanel(new GridLayout(1,3));
189
190
191 JButton jbutton = new JButton("OK");
192
193 button_pane.add(Box.createRigidArea(new Dimension(18,5)));
194 button_pane.add(jbutton);
195 button_pane.add(Box.createRigidArea(new Dimension(18,5)));
196
197 jbutton.addActionListener(this);
198 mainPane.add(button_pane,BorderLayout.SOUTH);
199 frame.getContentPane().add(mainPane, BorderLayout.CENTER);
200 frame.setVisible(true);
201 }
202
203 public void actionPerformed(ActionEvent e) {
204 writeReadMe();
205 frame.dispose();
206 }
207
208
209
210 public void writeReadMe(){
211 try{
212 FileWriter fstream = new FileWriter(filePath);
213 BufferedWriter br = new BufferedWriter(fstream);
214 br.write(message);
215 br.close();
216 }catch (Exception e){
217 System.err.println("Error: " + e.getMessage());
218 }
219 }
220}
221
222
Note: See TracBrowser for help on using the repository browser.