diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/ibm/ServerWizard2/DialogHandler.java | 3 | ||||
-rw-r--r-- | src/com/ibm/ServerWizard2/GithubFile.java | 53 | ||||
-rw-r--r-- | src/com/ibm/ServerWizard2/Launcher.java | 35 | ||||
-rw-r--r-- | src/com/ibm/ServerWizard2/LibraryManager.java | 73 | ||||
-rw-r--r-- | src/com/ibm/ServerWizard2/MainDialog.java | 13 | ||||
-rw-r--r-- | src/com/ibm/ServerWizard2/MessagePopup.java | 24 | ||||
-rw-r--r-- | src/com/ibm/ServerWizard2/ServerWizard2.java | 2 | ||||
-rw-r--r-- | src/com/ibm/ServerWizard2/SystemModel.java | 3 | ||||
-rw-r--r-- | src/com/ibm/ServerWizard2/TargetWizardController.java | 23 |
9 files changed, 101 insertions, 128 deletions
diff --git a/src/com/ibm/ServerWizard2/DialogHandler.java b/src/com/ibm/ServerWizard2/DialogHandler.java index 07596c4..0bfa0a4 100644 --- a/src/com/ibm/ServerWizard2/DialogHandler.java +++ b/src/com/ibm/ServerWizard2/DialogHandler.java @@ -6,7 +6,6 @@ import java.util.logging.LogRecord; import javax.swing.JTextArea; public class DialogHandler extends ConsoleHandler { - private JTextArea text; public DialogHandler(JTextArea text) { this.text=text; @@ -15,7 +14,7 @@ public class DialogHandler extends ConsoleHandler { @Override public void publish(LogRecord record) { text.append(record.getMessage()+"\n"); + text.setCaretPosition(text.getText().length()-1); super.publish(record); } - } diff --git a/src/com/ibm/ServerWizard2/GithubFile.java b/src/com/ibm/ServerWizard2/GithubFile.java index a013359..df07157 100644 --- a/src/com/ibm/ServerWizard2/GithubFile.java +++ b/src/com/ibm/ServerWizard2/GithubFile.java @@ -1,5 +1,6 @@ package com.ibm.ServerWizard2; +import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; @@ -8,6 +9,7 @@ import java.io.FileWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; +import java.net.URLConnection; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.Calendar; @@ -27,30 +29,28 @@ public class GithubFile { private File localFile; private String filename; - private FileTypes type; private String localDirectory; - private boolean inRelease=false; + private boolean isRelease=false; private String downloadUrl=""; private String downloadUrlTag="download_url"; private String apiUrl=""; private String version=""; private String repository=""; + private String subDirectory=""; private long remoteFileSize=0; private long localFileSize=0; private Logger logger; private boolean downloadNeeded=false; private static long MILLISECONDS_PER_DAY = 86400*1000; - public enum FileTypes { - ATTRIBUTE_TYPE_XML, TARGET_TYPE_XML, TARGET_INSTANCES_XML, SCRIPT, JAR - } - public GithubFile(String repository, String version, String filename, FileTypes type,Logger logger) { + public GithubFile(String repository, String version, String filename, String subDirectory, boolean isRelease, Logger logger) { this.repository=repository; this.version=version; this.filename=filename; - this.type=type; + this.isRelease=isRelease; + this.subDirectory=subDirectory; this.logger=logger; this.init(); } @@ -67,20 +67,9 @@ public class GithubFile { return this.localFileSize > 0; } public void init() { + String subDir=this.subDirectory+System.getProperty("file.separator"); String workingDir=GithubFile.getWorkingDir(); - String subDir=""; - String urlSubDir = ""; - if (type==FileTypes.SCRIPT) { - subDir="scripts"+System.getProperty("file.separator"); - urlSubDir="scripts/"; - } else if (type==FileTypes.JAR) { - subDir="jars"+System.getProperty("file.separator"); - this.inRelease=true; - } else { - subDir = "xml"+System.getProperty("file.separator"); - urlSubDir="xml/"; - } - if (this.inRelease) { + if (this.isRelease) { if (version.equals("latest")) { apiUrl=API_URL+repository+"releases/latest"; } else { @@ -88,7 +77,7 @@ public class GithubFile { } downloadUrlTag="browser_download_url"; } else { - apiUrl=API_URL+repository+"contents/"+urlSubDir+"?ref="+version; + apiUrl=API_URL+repository+"contents/"+this.subDirectory+"?ref="+version; } localDirectory=workingDir + subDir; this.localFile = new File(workingDir+subDir+filename); @@ -118,7 +107,7 @@ public class GithubFile { BufferedReader bis = new BufferedReader(new InputStreamReader(is)); JSONParser parser=new JSONParser(); List fileList; - if (this.inRelease) { + if (this.isRelease) { Map fileMap = (Map)parser.parse(bis); version = (String)fileMap.get("tag_name"); fileList = (List)fileMap.get("assets"); @@ -129,6 +118,7 @@ public class GithubFile { for (Object mapObj : fileList) { Map files = (Map) mapObj; String fileName = (String)files.get("name"); + //TODO: won't work if same filename in 2 subdirs if (fileName.equals(this.filename)) { downloadUrl = (String)files.get(this.downloadUrlTag); remoteFileSize = (Long)files.get("size"); @@ -145,7 +135,6 @@ public class GithubFile { logger.warning(e.toString()); if (this.localFileExists()) { logger.warning("Unable to download"); - removeUpdateFile(false); return false; } else { throw new Exception("Unable to connect to "+this.apiUrl+ " and "+this.filename+" does not exist locally."); @@ -168,23 +157,23 @@ public class GithubFile { public String getFilename() { return localFile.getName(); } - public FileTypes getType() { - return type; - } + public void download() throws Exception { if (!downloadNeeded) { return; } logger.info("Downloading: "+this.downloadUrl); if (!DEBUG) { this.mkdir(); URL url = new URL(this.downloadUrl); - ProgressMonitorInputStream pim = new ProgressMonitorInputStream(null, "Downloading "+ downloadUrl, - url.openStream()); - + URLConnection urlConn = url.openConnection(); + urlConn.setConnectTimeout(10000); + urlConn.setReadTimeout(10000); + InputStream is = urlConn.getInputStream(); + ProgressMonitorInputStream pim = new ProgressMonitorInputStream(null, "Downloading "+ downloadUrl,is); + logger.info("File Size: "+this.remoteFileSize); pim.getProgressMonitor().setMaximum((int) this.remoteFileSize); pim.getProgressMonitor().setMillisToDecideToPopup(500); - - Files.copy(pim, localFile.toPath(), - StandardCopyOption.REPLACE_EXISTING); + logger.info("Starting Download..."); + Files.copy(pim, localFile.toPath(),StandardCopyOption.REPLACE_EXISTING); } } public static String isTimeForUpdateCheck(Logger logger) { diff --git a/src/com/ibm/ServerWizard2/Launcher.java b/src/com/ibm/ServerWizard2/Launcher.java index fbe9eb0..e00c10f 100644 --- a/src/com/ibm/ServerWizard2/Launcher.java +++ b/src/com/ibm/ServerWizard2/Launcher.java @@ -17,8 +17,9 @@ import java.util.zip.ZipFile; import javax.swing.JOptionPane; public class Launcher { - public static String JAR_NAME = "serverwiz2"; - public static String ZIP_NAME = "serverwiz2_lib.zip"; + public final static String JAR_NAME = "serverwiz2"; + public final static String ZIP_NAME = "serverwiz2_lib.zip"; + public final static String REPOSITORY= "open-power/serverwiz/"; public final static Logger LOGGER = Logger.getLogger(Launcher.class.getName()); public Launcher() { @@ -37,7 +38,6 @@ public class Launcher { System.exit(3); } version=args[i+1]; - System.out.println("FORCE UPDATE:"+version); forceUpdate=true; } if (args[i].equals("-d")) { @@ -68,8 +68,8 @@ public class Launcher { String jarName = getArchFilename("serverwiz2"); LOGGER.info("JarName = "+jarName); - GithubFile jar = new GithubFile("open-power/serverwiz/",version,jarName,GithubFile.FileTypes.JAR,LOGGER); - GithubFile zip = new GithubFile("open-power/serverwiz/",version,ZIP_NAME,GithubFile.FileTypes.JAR,LOGGER); + GithubFile jar = new GithubFile(REPOSITORY,version,jarName,"jars",true,LOGGER); + GithubFile zip = new GithubFile(REPOSITORY,version,ZIP_NAME,"jars",true,LOGGER); String versionCurrent="NONE"; @@ -99,7 +99,7 @@ public class Launcher { boolean doUpdate=true; if (!versionCurrent.equals("NONE")) { int selection=JOptionPane.showConfirmDialog(null, - "There is a newer verison of ServerWiz2 ("+version+"). Would like like to download?", + "There is a newer version of ServerWiz2 ("+version+"). Would like like to download?", "Confirm Update", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (selection==JOptionPane.NO_OPTION) { doUpdate=false; @@ -120,6 +120,7 @@ public class Launcher { } } } catch(Exception e) { + //unknown state so force update next time. GithubFile.removeUpdateFile(false); LOGGER.severe(e.getMessage()); JOptionPane.showMessageDialog(null, e.toString(), "Error", JOptionPane.ERROR_MESSAGE); @@ -143,22 +144,24 @@ public class Launcher { } catch (Exception e) { } + Thread t=run(commandLine); + try { + t.join(); + } catch (Exception e) { + + } dm.close(); - run(commandLine); - LOGGER.info("Exiting..."); } - public static void run(Vector<String> commandLine) { + public static Thread run(Vector<String> commandLine) { String commandLineStr=""; for (String c : commandLine) { commandLineStr=commandLineStr+c+" "; } LOGGER.info("Running: "+commandLineStr); - try { final ProcessBuilder builder = new ProcessBuilder(commandLine).redirectErrorStream(true); final Process process = builder.start(); - - new Thread(new Runnable() { + Thread thread = new Thread(new Runnable() { public void run() { InputStreamReader in = new InputStreamReader(process.getInputStream()); BufferedReader inb = new BufferedReader(in); @@ -168,15 +171,19 @@ public class Launcher { LOGGER.info(thisLine); } } catch (IOException e) { + LOGGER.info(e.toString()); e.printStackTrace(); } } - }).start(); - + }); + thread.start(); + return thread; //final int exitValue = process.waitFor(); } catch (Exception e) { + LOGGER.info(e.toString()); e.printStackTrace(); } + return null; } public static String getWorkingDir() { // gets working directory whether running as jar or from eclipse diff --git a/src/com/ibm/ServerWizard2/LibraryManager.java b/src/com/ibm/ServerWizard2/LibraryManager.java index 3d9c3f5..fae64c9 100644 --- a/src/com/ibm/ServerWizard2/LibraryManager.java +++ b/src/com/ibm/ServerWizard2/LibraryManager.java @@ -1,71 +1,30 @@ package com.ibm.ServerWizard2; +import com.ibm.ServerWizard2.LibraryFile.FileTypes; + public class LibraryManager { - private String processScript = ""; - private String processDirectory = ""; - public static String REPO = "open-power/serverwiz/"; - GithubFile files[] = new GithubFile[7]; + LibraryFile files[] = new LibraryFile[5]; public void loadModel(SystemModel model) throws Exception { - for (GithubFile libFile : files) { - if (libFile.getType() == GithubFile.FileTypes.ATTRIBUTE_TYPE_XML) { - model.loadAttributes(new XmlHandler(), libFile.getLocalPath()); + for (LibraryFile libFile : files) { + if (libFile.getType() == LibraryFile.FileTypes.ATTRIBUTE_TYPE_XML) { + model.loadAttributes(new XmlHandler(), libFile.getPath()); } - if (libFile.getType() == GithubFile.FileTypes.TARGET_TYPE_XML) { - model.loadTargetTypes(new XmlHandler(), libFile.getLocalPath()); + if (libFile.getType() == LibraryFile.FileTypes.TARGET_TYPE_XML) { + model.loadTargetTypes(new XmlHandler(), libFile.getPath()); } - if (libFile.getType() == GithubFile.FileTypes.TARGET_INSTANCES_XML) { - model.loadTargetInstances(libFile.getLocalPath()); + if (libFile.getType() == LibraryFile.FileTypes.TARGET_INSTANCES_XML) { + model.loadTargetInstances(libFile.getPath()); } } } - public void init(String version) { - files[0] = new GithubFile(REPO,version, - "attribute_types.xml",GithubFile.FileTypes.ATTRIBUTE_TYPE_XML,ServerWizard2.LOGGER); - - files[1] = new GithubFile(REPO,version, - "attribute_types_hb.xml",GithubFile.FileTypes.ATTRIBUTE_TYPE_XML,ServerWizard2.LOGGER); - - files[2] = new GithubFile(REPO,version, - "attribute_types_mrw.xml",GithubFile.FileTypes.ATTRIBUTE_TYPE_XML,ServerWizard2.LOGGER); - - files[3] = new GithubFile(REPO,version, - "target_types_mrw.xml",GithubFile.FileTypes.TARGET_TYPE_XML,ServerWizard2.LOGGER); - - files[4] = new GithubFile(REPO,version, - "target_instances_v3.xml",GithubFile.FileTypes.TARGET_INSTANCES_XML,ServerWizard2.LOGGER); - - files[5] = new GithubFile(REPO,version, - "processMrw.pl",GithubFile.FileTypes.SCRIPT,ServerWizard2.LOGGER); - - files[6] = new GithubFile(REPO,version, - "Targets.pm",GithubFile.FileTypes.SCRIPT,ServerWizard2.LOGGER); - - processScript = files[5].getLocalPath(); - processDirectory = files[5].getLocalDirectory(); - } - public String getProcessingScript() { - return this.processScript; - } - public String getProcessingDirectory() { - return this.processDirectory; - } - - - /* - * check if files exist yes- files exist, check if github is newer if yes, - * then ask user if wishes to update if no or can't download, then continue - * no- files don't exist; download if can't download, then exit - */ - public void update(String version) throws Exception { - if (!version.isEmpty()) { - ServerWizard2.LOGGER.info("Updating XML lib to version: "+version+"\n"); - for (GithubFile libFile : files) { - libFile.update(); - libFile.download(); - } - } + public void init() { + files[0] = new LibraryFile("xml/attribute_types.xml",FileTypes.ATTRIBUTE_TYPE_XML); + files[1] = new LibraryFile("xml/attribute_types_hb.xml",FileTypes.ATTRIBUTE_TYPE_XML); + files[2] = new LibraryFile("xml/attribute_types_mrw.xml",FileTypes.ATTRIBUTE_TYPE_XML); + files[3] = new LibraryFile("xml/target_types_mrw.xml",FileTypes.TARGET_TYPE_XML); + files[4] = new LibraryFile("xml/target_instances_v3.xml",FileTypes.TARGET_INSTANCES_XML); } } diff --git a/src/com/ibm/ServerWizard2/MainDialog.java b/src/com/ibm/ServerWizard2/MainDialog.java index e892216..bc78c6a 100644 --- a/src/com/ibm/ServerWizard2/MainDialog.java +++ b/src/com/ibm/ServerWizard2/MainDialog.java @@ -98,6 +98,7 @@ public class MainDialog extends Dialog { private Label lblInstanceDirections; private Composite compositeDir; private Button btnHideBusses; + private Button btnShowHidden; /** * Create the dialog. @@ -215,7 +216,9 @@ public class MainDialog extends Dialog { btnDeleteTarget.setFont(SWTResourceManager.getFont("Arial", 9, SWT.NORMAL)); btnDeleteTarget.setText("Delete Instance"); new Label(compositeInstance, SWT.NONE); - new Label(compositeInstance, SWT.NONE); + + btnShowHidden = new Button(compositeInstance, SWT.CHECK); + btnShowHidden.setText(" Show Hidden"); btnCopyInstance = new Button(compositeInstance, SWT.NONE); btnCopyInstance.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false, 1, 1)); @@ -850,7 +853,7 @@ public class MainDialog extends Dialog { } } } - Vector<Target> children = controller.getVisibleChildren(target); + Vector<Target> children = controller.getVisibleChildren(target,this.btnShowHidden.getSelection()); TreeItem treeitem = item; if (item == null) { if (parentItem == null) { @@ -978,6 +981,12 @@ public class MainDialog extends Dialog { } public void addEvents() { + btnShowHidden.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent arg0) { + refreshInstanceTree(); + } + }); tabFolder.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent arg0) { diff --git a/src/com/ibm/ServerWizard2/MessagePopup.java b/src/com/ibm/ServerWizard2/MessagePopup.java index 4d7057e..03b277c 100644 --- a/src/com/ibm/ServerWizard2/MessagePopup.java +++ b/src/com/ibm/ServerWizard2/MessagePopup.java @@ -1,33 +1,33 @@ package com.ibm.ServerWizard2; -import java.awt.Dimension; +import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; + import javax.swing.JFrame; -import javax.swing.JLabel; +import javax.swing.JScrollPane; import javax.swing.JTextArea; -import javax.swing.SwingConstants; -import java.awt.BorderLayout; public class MessagePopup implements ActionListener { public MessagePopup() { - // TODO Auto-generated constructor stub + } //private final int ONE_SECOND = 1000; //private Timer timer; private JFrame frame; - private JLabel msgLabel; + //private JLabel msgLabel; public JTextArea text; + private JScrollPane sp; public MessagePopup(String str, int seconds) { - frame = new JFrame("Test Message"); - msgLabel = new JLabel(str, SwingConstants.CENTER); - text = new JTextArea(30,60); - - msgLabel.setPreferredSize(new Dimension(600, 400)); + frame = new JFrame("ServerWiz2 Launcher Console"); + //msgLabel = new JLabel(str, SwingConstants.CENTER); + text = new JTextArea(10,80); + sp = new JScrollPane(text); + //msgLabel.setPreferredSize(new Dimension(600, 400)); //timer = new Timer(this.ONE_SECOND * seconds, this); // only need to fire up once to make the message box disappear @@ -40,7 +40,7 @@ public class MessagePopup implements ActionListener { public void open() { // make the message box appear and start the timer //frame.getContentPane().add(msgLabel, BorderLayout.CENTER); - frame.getContentPane().add(text, BorderLayout.CENTER); + frame.getContentPane().add(sp, BorderLayout.CENTER); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); diff --git a/src/com/ibm/ServerWizard2/ServerWizard2.java b/src/com/ibm/ServerWizard2/ServerWizard2.java index 66e1618..c987721 100644 --- a/src/com/ibm/ServerWizard2/ServerWizard2.java +++ b/src/com/ibm/ServerWizard2/ServerWizard2.java @@ -63,7 +63,7 @@ public class ServerWizard2 { SystemModel systemModel = new SystemModel(); MainDialog view = new MainDialog(null); tc.setView(view); - tc.setModel(systemModel,version); + tc.setModel(systemModel); systemModel.addPropertyChangeListener(tc); view.setController(tc); if (!inputFilename.isEmpty()) { diff --git a/src/com/ibm/ServerWizard2/SystemModel.java b/src/com/ibm/ServerWizard2/SystemModel.java index 0ad06d3..9719bdd 100644 --- a/src/com/ibm/ServerWizard2/SystemModel.java +++ b/src/com/ibm/ServerWizard2/SystemModel.java @@ -108,9 +108,10 @@ public class SystemModel { } } } else { - if (childTarget.getAttribute("MRW_TYPE").equals("IPMI_SENSOR")) { + if (entityInst!=-1) { String msg = ">> WARNING: "+childTarget.getName()+"; Entity ID: "+entityId+"; Entity Inst: "+entityInst+" not found in SDR"; this.logData=this.logData+msg+"\n"; + this.setGlobalSetting(instPath, "IPMI_SENSOR_ID", ""); } } } diff --git a/src/com/ibm/ServerWizard2/TargetWizardController.java b/src/com/ibm/ServerWizard2/TargetWizardController.java index 266aa82..fd19069 100644 --- a/src/com/ibm/ServerWizard2/TargetWizardController.java +++ b/src/com/ibm/ServerWizard2/TargetWizardController.java @@ -24,13 +24,13 @@ public class TargetWizardController implements PropertyChangeListener { SystemModel model; MainDialog view; LibraryManager xmlLib = new LibraryManager(); - private String version=""; + private final String PROCESSING_SCRIPT="scripts/processMrw.pl"; public TargetWizardController() { } public void init() { - xmlLib.init(version); + xmlLib.init(); try { //xmlLib.update(version); xmlLib.loadModel(model); @@ -115,9 +115,8 @@ public class TargetWizardController implements PropertyChangeListener { this.view = view; } - public void setModel(SystemModel model,String version) { + public void setModel(SystemModel model) { this.model = model; - this.version=version; } public Vector<String> getEnums(String e) { @@ -228,7 +227,7 @@ public class TargetWizardController implements PropertyChangeListener { public void hideBusses(Target target) { target.hideBusses(model.getTargetLookup()); } - public Vector<Target> getVisibleChildren(Target target) { + public Vector<Target> getVisibleChildren(Target target,boolean showHidden) { Vector<Target> children = new Vector<Target>(); for (String c : target.getChildren()) { Target t = model.getTarget(c); @@ -238,6 +237,16 @@ public class TargetWizardController implements PropertyChangeListener { } children.add(t); } + if (showHidden) { + for (String c : target.getHiddenChildren()) { + Target t = model.getTarget(c); + if (t==null) { + String msg="Invalid Child target id: "+c; + ServerWizard2.LOGGER.severe(msg); + } + children.add(t); + } + } return children; } @@ -251,8 +260,8 @@ public class TargetWizardController implements PropertyChangeListener { String commandLine[] = { "perl", "-I", - xmlLib.getProcessingDirectory(), - xmlLib.getProcessingScript(), + LibraryFile.getWorkingDir(), + LibraryFile.getWorkingDir()+PROCESSING_SCRIPT, "-x", filename, "-f" |