All Downloads are FREE. Search and download functionalities are using the official Maven repository.

java.fedora.client.batch.BatchModifyValidate Maven / Gradle / Ivy

Go to download

The Fedora Client is a Java Library that allows API access to a Fedora Repository. The client is typically one part of a full Fedora installation.

The newest version!
/*
 * -----------------------------------------------------------------------------
 *
 * 

License and Copyright: The contents of this file are subject to the * Apache License, Version 2.0 (the "License"); you may not use * this file except in compliance with the License. You may obtain a copy of * the License at * http://www.fedora-commons.org/licenses.

* *

Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License.

* *

The entire file consists of original code.

*

Copyright © 2008 Fedora Commons, Inc.
*

Copyright © 2002-2007 The Rector and Visitors of the University of * Virginia and Cornell University
* All rights reserved.

* * ----------------------------------------------------------------------------- */ package fedora.client.batch; import java.awt.Font; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.PrintStream; import javax.swing.*; import javax.swing.text.JTextComponent; import fedora.common.Constants; import fedora.client.Administrator; import fedora.server.utilities.StreamUtility; /** * *

Title: BatchModifyValidate.java

*

Description: A GUI interface for entering info required to validate * a file of modify directives against the batchModify.xsd XML Schema. The * batch modify utility has validation turned on so pre-validation is not * necessary. It is provided as a means to pre-validate a modify directives * file prior to running it through the batch modify utility. * * @author [email protected] * @version $Id: BatchModifyValidate.java 5313 2006-12-06 12:14:27Z cwilper $ */ public class BatchModifyValidate { private static String s_rootName = null; private static String s_logPath = null; private static PrintStream s_log = null; /** *

Constructor for the class.

*/ public BatchModifyValidate() { InputStream in = null; BatchModifyValidator bmv = null; File file = null; long st=System.currentTimeMillis(); long et=0; try { JFileChooser browse=new JFileChooser(Administrator.getLastDir()); browse.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); int returnVal = browse.showOpenDialog(Administrator.getDesktop()); if (returnVal == JFileChooser.APPROVE_OPTION) { file = browse.getSelectedFile(); int n = JOptionPane.showConfirmDialog(Administrator.getDesktop(), "Validate the Modify Directives in file: \n" + file.getAbsoluteFile()+" ?\n", "Validate Modify Directives File", JOptionPane.YES_NO_OPTION); if (n==JOptionPane.YES_OPTION) { Administrator.setLastDir(file); openLog("validate-modify-directives"); in = new FileInputStream(file); bmv = new BatchModifyValidator(in, s_log); } } } catch (Exception e) { Administrator.showErrorDialog(Administrator.getDesktop(), "Error Parsing Directives File.", e.getClass().getName() + " - " + (e.getMessage()==null ? "(no detail provided)" : e.getMessage()), e); } finally { try { if (in != null) in.close(); if (s_log!=null && bmv!=null) { et=System.currentTimeMillis(); if (bmv.isValid()) { JOptionPane.showMessageDialog(Administrator.getDesktop(), "Modify Directives file: \n"+file.getAbsoluteFile() + "\nis Valid !" + "\nTime elapsed: " + getDuration(et-st), "Directives File Valid", JOptionPane.INFORMATION_MESSAGE); closeLog(); return; } JOptionPane.showMessageDialog(Administrator.getDesktop(), +bmv.getErrorCount()+" XML validation errors found in Modify Directives file.\n" + "See log file for details.\n" + "Time elapsed: " + getDuration(et-st)); s_log.println(" "); s_log.println(" "+StreamUtility.enc(bmv.getErrorCount() + " XML validation errors found in Modify Directives file.\n" + " See log file for details.\n" + " Time elapsed: " + getDuration(et-st))); s_log.println(" "); closeLog(); int n = JOptionPane.showConfirmDialog(Administrator.getDesktop(), "A detailed log file was created at\n" + s_logPath + "\n\n" + "View it now?", "View Validation Log?", JOptionPane.YES_NO_OPTION); if (n==JOptionPane.YES_OPTION) { JTextComponent textEditor=new JTextArea(); textEditor.setFont(new Font("monospaced", Font.PLAIN, 12)); textEditor.setText(fileAsString(s_logPath)); textEditor.setCaretPosition(0); textEditor.setEditable(false); JInternalFrame viewFrame=new JInternalFrame("Viewing " + s_logPath, true, true, true, true); viewFrame.setFrameIcon(new ImageIcon(this.getClass().getClassLoader().getResource("images/standard/general/Edit16.gif"))); viewFrame.getContentPane().add(new JScrollPane(textEditor)); viewFrame.setSize(720,520); viewFrame.setVisible(true); Administrator.getDesktop().add(viewFrame); s_log=null; try { viewFrame.setSelected(true); } catch (java.beans.PropertyVetoException pve) { // ignore } } } } catch (Exception e) { e.printStackTrace(); Administrator.showErrorDialog(Administrator.getDesktop(), "Error", e.getClass().getName() + " - " + (e.getMessage()==null ? "(no detail provided)" : e.getMessage()), e); } } } /** *

Convert the duration time from milliseconds to standard hours, minutes, * and seconds format.

* * @param millis - The time interval to convert in miliseconds. * @return A string with the converted time. */ private static String getDuration(long millis) { long tsec=millis/1000; long h=tsec/60/60; long m=(tsec - (h*60*60))/60; long s=(tsec - (h*60*60) - (m*60)); StringBuffer out=new StringBuffer(); if (h>0) { out.append(h + " hour"); if (h>1) out.append('s'); } if (m>0) { if (h>0) out.append(", "); out.append(m + " minute"); if (m>1) out.append('s'); } if (s>0 || (h==0 && m==0)) { if (h>0 || m>0) out.append(", "); out.append(s + " second"); if (s!=1) out.append('s'); } return out.toString(); } /** *

Initializes the log file for writing.

* * @param rootName - The name of the root element for the xml log file. * @throws Exception - If any type of error occurs in trying to open the * log file for writing. */ private static void openLog(String rootName) throws Exception { s_rootName=rootName; String fileName=s_rootName + "-" + System.currentTimeMillis() + ".xml"; File outFile; String fedoraHome = Constants.FEDORA_HOME; if (fedoraHome == null) { // to current dir outFile=new File(fileName); } else { // to client/log File logDir=new File(new File(new File(fedoraHome), "client"), "logs"); if (!logDir.exists()) { logDir.mkdir(); } outFile=new File(logDir, fileName); } s_logPath=outFile.getPath(); s_log=new PrintStream(new FileOutputStream(outFile), true, "UTF-8"); s_log.println(""); s_log.println("<" + s_rootName + ">"); } /** *

Closes the log file.

* * @throws Exception - If any type of error occurs in closing the log file. */ private static void closeLog() throws Exception { s_log.println(""); s_log.close(); } /** *

Converts file into string.

* * @param path - The absolute file path of the file. * @return - The contents of the file as a string. * @throws Exception - If any type of error occurs during the conversion. */ private static String fileAsString(String path) throws Exception { StringBuffer buffer = new StringBuffer(); InputStream fis=new FileInputStream(path); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); Reader in = new BufferedReader(isr); int ch; while ((ch = in.read()) > -1) { buffer.append((char)ch); } in.close(); return buffer.toString(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy