/*
* -------------------------------------------------------------------------
* Copyright 2014
* Centre for Information Modeling - Austrian Centre for Digital Humanities
*
* Licensed under 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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License
* -------------------------------------------------------------------------
*/
package org.emile.cirilo.dialog;
import voodoosoft.jroots.core.CServiceProvider;
import voodoosoft.jroots.core.CPropertyService;
import voodoosoft.jroots.core.gui.CEventListener;
import voodoosoft.jroots.core.gui.CItemListener;
import voodoosoft.jroots.dialog.*;
import org.emile.cirilo.Common;
import org.emile.cirilo.ServiceNames;
import org.emile.cirilo.ecm.templates.*;
import org.emile.cirilo.ecm.repository.*;
import org.emile.cirilo.utils.Split;
import org.emile.cirilo.business.*;
import org.emile.cirilo.*;
import com.asprise.util.ui.progress.ProgressDialog;
import org.apache.log4j.Logger;
import java.awt.Cursor;
import java.awt.event.*;
import javax.swing.*;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.Attribute;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.jdom.xpath.XPath;
import java.text.MessageFormat;
import java.util.*;
import java.io.*;
import java.awt.Color;
import org.xmldb.api.base.*;
import org.xmldb.api.*;
/**
* Description of the Class
*
* @author Johannes Stigler
* @created 10.3.2011
*/
public class IngestObjectDialog extends CDialog {
private static Logger log = Logger.getLogger(IngestObjectDialog.class);
/**
* Constructor for the LoginDialog object
*/
public IngestObjectDialog() {}
/**
* Description of the Method
*
* @param e Description of the Parameter
*/
public void handleCancelButton(ActionEvent e) {
org.emile.cirilo.dialog.CBoundSerializer.save(this.getCoreDialog(), se.getIngestDialogProperties(), (JTable) null);
close();
}
/**
* Description of the Method
*
* @param e Description of the Parameter
*/
public void handleResetButton(ActionEvent e) {
try {
JCheckBox jcbGenerated = ((JCheckBox) getGuiComposite().getWidget("jcbGenerated"));
jcbGenerated.setSelected(false);
JComboBox jcbContentModel = ((JComboBox) getGuiComposite().getWidget("jcbContentModel"));
jcbContentModel.setSelectedIndex(0);
set();
new DCMI().reset(moGA);
} catch (Exception ex) {
}
}
/**
* Description of the Method
*
* @param e Description of the Parameter
*/
public void handleCBGenerated(ActionEvent e) {
try {
set();
} catch (Exception ex) {
}
}
private void set() {
try {
JCheckBox jcbGenerated = ((JCheckBox) getGuiComposite().getWidget("jcbGenerated"));
JTextField jtfPID = ((JTextField) getGuiComposite().getWidget("jtfPID"));
JTextField jtfTitle = ((JTextField) getGuiComposite().getWidget("jtfTitle"));
JComboBox jcbNamespace = ((JComboBox) getGuiComposite().getWidget("jcbNamespace"));
JComboBox jcbUser = ((JComboBox) getGuiComposite().getWidget("jcbUser"));
JComboBox jcbContentModel = ((JComboBox) getGuiComposite().getWidget("jcbContentModel"));
jcbUser.setSelectedItem(user.getUser());
jcbNamespace.setEnabled(false);
String cm = jcbContentModel.getSelectedItem().toString().toLowerCase();
JButton jbEXCEL = ((JButton) getGuiComposite().getWidget("jbEXCEL"));
jbEXCEL.setEnabled(!(cm.contains("cirilo:mei") || cm.contains("cirilo:ontology")));
if (cm.contains("context")) {
jcbNamespace.setSelectedIndex(1);
} else {
jcbNamespace.setSelectedIndex(0);
}
if (!jcbGenerated.isSelected()) {
jtfPID.setBackground( new Color (238,238,238) );
jtfPID.setText("");
jtfPID.setEnabled(false);
jtfTitle.requestFocus();
} else {
jtfPID.setBackground( Color.YELLOW );
jtfPID.setEnabled(true);
jtfPID.requestFocus();
}
} catch (Exception ex) {
}
}
public void handleCMComboBox(ItemEvent e)
throws Exception {
if (e.getStateChange() == 1) {
set();
}
}
public void handleShowLogfileButton(ActionEvent e)
throws Exception {
TextEditor dlg = (TextEditor) CServiceProvider.getService(DialogNames.TEXTEDITOR);
dlg.set(logfile, null, "text/log", "R", null, null, null);
dlg.open();
}
public void handleIngestFromFilesystemButton(ActionEvent e)
throws Exception {
new Thread() {
public void run() {
FileWriter logger = null;
String model = "";
try {
CPropertyService props = (CPropertyService) CServiceProvider.getService(ServiceNames.PROPERTIES);
TemplateSubsystem temps = (TemplateSubsystem) CServiceProvider.getService(ServiceNames.TEMPLATESUBSYSTEM);
JComboBox jcbContentModel = ((JComboBox) getGuiComposite().getWidget("jcbContentModel"));
JComboBox jcbNamespace = ((JComboBox) getGuiComposite().getWidget("jcbNamespace"));
JComboBox jcbUser = ((JComboBox) getGuiComposite().getWidget("jcbUser"));
model = (String)jcbContentModel.getSelectedItem();
JFileChooser chooser = new JFileChooser(props.getProperty("user", "ingest.import.path"));
chooser.setDialogTitle(res.getString("chooseidir"));
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (chooser.showDialog(getCoreDialog(), res.getString("choose")) != JFileChooser.APPROVE_OPTION) {
return;
}
props.setProperty("user", "ingest.import.path", chooser.getCurrentDirectory().getAbsolutePath());
props.saveProperties("user");
File fp = chooser.getSelectedFile();
logger = new FileWriter( fp.getAbsolutePath()+System.getProperty( "file.separator" )+"ingest.log" );
getCoreDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
rdfs = new RDF();
files = new ArrayList<String>();
pids = new ArrayList<String>();
treeWalk(fp,true, model);
if (model.contains("Ontology")) {
pids = rdfs.getPidList();
}
MessageFormat msgFmt = new MessageFormat(res.getString("objcrea"));
Object[] args = {new Integer( pids.size() == 0 ? files.size() : pids.size() ).toString(), model, fp.getAbsolutePath()};
int liChoice = JOptionPane.showConfirmDialog(null, msgFmt.format(args) ,
Common.WINDOW_HEADER, JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if (liChoice == 0) {
props.setProperty("user", "Ingest.ContentModel", jcbContentModel.getSelectedItem().toString());
ProgressDialog progressDialog = new ProgressDialog( getCoreDialog(), Common.WINDOW_HEADER);
progressDialog.displayPercentageInProgressBar = true;
progressDialog.millisToDecideToPopup = 1;
progressDialog.millisToPopup = 1;
progressDialog.beginTask(res.getString("ingestcont"), pids.size() == 0 ? files.size() : pids.size(), true);
int fa = 0;
fi = 0;
progressDialog.worked(1);
boolean onlyValidate = ((JCheckBox) getGuiComposite().getWidget("jcbSimulate")).isSelected();
String simulate = onlyValidate ? res.getString("ofsim") : "";
logger.write( res.getString("start")+ simulate+res.getString("ofingest") +new java.util.Date() );
JCheckBox jcbGenerated = ((JCheckBox) getGuiComposite().getWidget("jcbGenerated"));
JTextField jtfPID = ((JTextField) getGuiComposite().getWidget("jtfPID"));
for (int i = 0; i < (pids.size() == 0 ? files.size() : pids.size()); i++) {
String pid = (String)jcbNamespace.getSelectedItem()+(String)jcbUser.getSelectedItem();
progressDialog.setTaskName(res.getString("ingestof")+ (pids.size() == 0 ? files.get(i) : pids.get(i)) +" ...");
if (jcbGenerated.isSelected() && !jtfPID.getText().isEmpty()) {
pid = "o:"+jtfPID.getText();
if (files.size() == 1 || pids.size()==1) {
if (Repository.exist(pid)) {
msgFmt = new MessageFormat(res.getString("double"));
Object[] args9 = {pid};
JOptionPane.showMessageDialog( getCoreDialog(), msgFmt.format(args9) , Common.WINDOW_HEADER, JOptionPane.INFORMATION_MESSAGE);
break;
}
pid = "$"+pid;
}
}
if(progressDialog.isCanceled()) {
break;
}
progressDialog.worked(1);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
if (model.contains("TEI")) {
TEI t = new TEI(logger, onlyValidate, true);
t.setUser((String)jcbUser.getSelectedItem());
t.set((String) files.get(i), false);
if (!t.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidtei"));
Object[] args0 = {new java.util.Date(), (String) files.get(i)};
logger.write( msgFmt.format(args0) );
continue;
}
Split pcm = new Split(model);
if (t.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
t.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {t.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args1 = {new java.util.Date(), pid, t.getName() };
logger.write(msgFmt.format(args1) );
} else {
if (!Repository.exist(t.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ t.getPID(), res.getString("notitle"));
if (!Common.exist(t.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), t.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args2 = {new java.util.Date(), t.getPID(), t.getName() };
logger.write(msgFmt.format(args2));
} else {
if (t.getPID().contains(":"+(String)jcbUser.getSelectedItem()) || groups.contains("administrator")) {
msgFmt = new MessageFormat(res.getString("objingrefr"));
Object[] args3 = {new java.util.Date(), t.getPID(), t.getName() };
logger.write( msgFmt.format(args3));
fa++;
} else {
msgFmt = new MessageFormat(res.getString("denied"));
Object[] args4 = {new java.util.Date(), (String)jcbUser.getSelectedItem(), t.getPID() };
logger.write( msgFmt.format(args4));
continue;
}
}
}
t.validate(pcm.get(), moGA);
Common.genQR(user, t.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(t.getPID(), "TEI_SOURCE", "text/xml", t.toString());
} catch (Exception q) {}
}
if (model.contains("MEI")) {
MEI m = new MEI(logger, onlyValidate, true);
m.setUser((String)jcbUser.getSelectedItem());
m.set((String) files.get(i), false);
if (!m.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidtei"));
Object[] args0 = {new java.util.Date(), (String) files.get(i)};
logger.write( msgFmt.format(args0) );
continue;
}
Split pcm = new Split(model);
if (m.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
m.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {m.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args1 = {new java.util.Date(), pid, m.getName() };
logger.write(msgFmt.format(args1) );
} else {
if (!Repository.exist(m.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ m.getPID(), res.getString("notitle"));
if (!Common.exist(m.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), m.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args2 = {new java.util.Date(), m.getPID(), m.getName() };
logger.write(msgFmt.format(args2));
} else {
if (m.getPID().contains(":"+(String)jcbUser.getSelectedItem()+".") || groups.contains("administrator")) {
msgFmt = new MessageFormat(res.getString("objingrefr"));
Object[] args3 = {new java.util.Date(), m.getPID(), m.getName() };
logger.write( msgFmt.format(args3));
fa++;
} else {
msgFmt = new MessageFormat(res.getString("denied"));
Object[] args4 = {new java.util.Date(), (String)jcbUser.getSelectedItem(), m.getPID() };
logger.write( msgFmt.format(args4));
continue;
}
}
}
m.validate(pcm.get(), moGA);
Common.genQR(user, m.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(m.getPID(), "MEI_SOURCE", "text/xml", m.toString());
} catch (Exception q) {}
}
if (model.contains("METS") ) {
METS m = new METS(logger, onlyValidate, true);
m.setUser((String)jcbUser.getSelectedItem());
m.set((String) files.get(i), false);
if (!m.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidmets"));
Object[] args5 = {new java.util.Date(), (String) files.get(i)};
logger.write( msgFmt.format(args5));
continue;
}
Split pcm = new Split(model);
if (m.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
m.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {m.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args6 = {new java.util.Date(), pid, m.getName() };
logger.write( msgFmt.format(args6));
} else {
if (!Repository.exist(m.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ m.getPID(), res.getString("notitle"));
if (!Common.exist(m.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), m.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args7 = {new java.util.Date(), m.getPID(), m.getName() };
logger.write( msgFmt.format(args7));
} else {
msgFmt = new MessageFormat(res.getString("objingrefr"));
Object[] args8 = {new java.util.Date(), m.getPID(), m.getName() };
logger.write(msgFmt.format(args8));
fa++;
}
}
m.ingestImages();
m.write();
m.createMapping(pcm.get(), moGA);
Common.genQR(user, m.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(m.getPID(), "METS_SOURCE", "text/xml", m.toString());
} catch (Exception q) {
log.error(q.getLocalizedMessage(),q);
}
}
if (model.contains("LIDO")) {
LIDO l = new LIDO(logger, onlyValidate, true);
l.setUser((String)jcbUser.getSelectedItem());
l.set((String) files.get(i), false);
if (!l.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidtei"));
Object[] args0 = {new java.util.Date(), (String) files.get(i)};
logger.write( msgFmt.format(args0) );
continue;
}
Split pcm = new Split(model);
if (l.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
l.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {l.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args1 = {new java.util.Date(), pid, l.getName() };
logger.write(msgFmt.format(args1) );
} else {
if (!Repository.exist(l.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ l.getPID(), res.getString("notitle"));
if (!Common.exist(l.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), l.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args2 = {new java.util.Date(), l.getPID(), l.getName() };
logger.write(msgFmt.format(args2));
} else {
if (l.getPID().contains(":"+(String)jcbUser.getSelectedItem()+".") || groups.contains("administrator")) {
msgFmt = new MessageFormat(res.getString("objingrefr"));
Object[] args3 = {new java.util.Date(), l.getPID(), l.getName() };
logger.write( msgFmt.format(args3));
fa++;
} else {
msgFmt = new MessageFormat(res.getString("denied"));
Object[] args4 = {new java.util.Date(), (String)jcbUser.getSelectedItem(), l.getPID() };
logger.write( msgFmt.format(args4));
continue;
}
}
}
l.validate(pcm.get(), moGA);
Common.genQR(user, l.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(l.getPID(), "LIDO_SOURCE", "text/xml", l.toString());
} catch (Exception q) {}
}
if (model.contains("Ontology")) {
String s;
if (pids.size() > 0) {
pid = pids.get(i);
s = rdfs.get(pid);
} else {
pid = "o:"+user.getUser();
rdfs.set(files.get(i));
s = rdfs.toString();
}
if (!onlyValidate) {
try{
File temp = File.createTempFile("tmp","xml");
FileOutputStream fos = new FileOutputStream(temp);
fos.write(s.getBytes("UTF-8"));
fos.close();
Split pcm = new Split(model);
if (!Repository.exist(pid)) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), (pids.size()>0 ? "$":"")+pid.trim(), res.getString("notitle"));
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args6 = {new java.util.Date(), pid, (pids.size()>0 ? pids.get(i) : files.get(i)) };
logger.write( msgFmt.format(args6));
} else {
fa++;
msgFmt = new MessageFormat(res.getString("objingrrefr"));
Object[] args6 = {new java.util.Date(), pid, (pids.size()>0 ? pids.get(i) : files.get(i)) };
logger.write( msgFmt.format(args6));
}
TripleStoreFactory tf = new TripleStoreFactory();
if (tf.getStatus()) {
if (tf.update(temp, pid)) {
if (pids.size() >0) rdfs.mapDC(pid);
Repository.modifyDatastreamByValue(pid, "ONTOLOGY", "text/xml", rdfs.toString());
Common.genQR(user, pid);
} else {
msgFmt = new MessageFormat(res.getString("nonvalidrdf"));
Object[] args6 = {new java.util.Date(), pid };
logger.write( msgFmt.format(args6));
}
}
tf.close();
temp.delete();
} catch (Exception q) {}
}
}
}
logger.write("\n" +res.getString("end")+simulate+res.getString("ofingest") + new java.util.Date() + ". " + new Integer(fi).toString().trim() + res.getString("ingested")+ new Integer(fa).toString().trim() + res.getString("refreshed"));
logger.close();
JOptionPane.showMessageDialog( getCoreDialog(), new Integer(fi).toString()+ res.getString("ingested")+ new Integer(fa).toString().trim() + res.getString("refreshed") + res.getString("details")+fp.getAbsolutePath()+System.getProperty( "file.separator" )+"ingest.log" , Common.WINDOW_HEADER, JOptionPane.INFORMATION_MESSAGE);
logfile =fp.getAbsolutePath()+System.getProperty( "file.separator" )+"ingest.log";
getGuiComposite().getWidget("jbShowLogfile").setEnabled(true);
}
} catch (Exception ex) {
try {
logger.write(new java.util.Date() +" "+ex.getLocalizedMessage()+"\n");
logger.close();
} catch (Exception ez) {}
}
finally {
getCoreDialog().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}
}.start();
}
public void handleIngestFromExistButton(ActionEvent e)
throws Exception {
new Thread() {
public void run() {
final String driver = "org.exist.xmldb.DatabaseImpl";
String model = "";
try {
CPropertyService props = (CPropertyService) CServiceProvider.getService(ServiceNames.PROPERTIES);
TemplateSubsystem temps = (TemplateSubsystem) CServiceProvider.getService(ServiceNames.TEMPLATESUBSYSTEM);
JComboBox jcbContentModel = ((JComboBox) getGuiComposite().getWidget("jcbContentModel"));
JComboBox jcbNamespace = ((JComboBox) getGuiComposite().getWidget("jcbNamespace"));
JComboBox jcbUser = ((JComboBox) getGuiComposite().getWidget("jcbUser"));
model = (String)jcbContentModel.getSelectedItem();
Class cl = Class.forName( driver );
Database database = (Database) cl.newInstance();
database.setProperty( "create-database", "true" );
DatabaseManager.registerDatabase( database );
getCoreDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
int fa=0;
LoginExistDialog loLogin;
loLogin = (LoginExistDialog) CServiceProvider.getService(DialogNames.LOGIN_EXISTDIALOG);
loLogin.open();
if (!loLogin.isConnected()) {
return;
}
files = new ArrayList<String>();
treeWalk(user.getExistUrl() , user.getExistHome(), user.getExistUser(), user.getExistPasswd());
MessageFormat msgFmt = new MessageFormat(res.getString("objcrea"));
Object[] args = {new Integer(files.size()).toString(), model, (user.getExistUrl()+user.getExistHome()) };
int liChoice = JOptionPane.showConfirmDialog(null, msgFmt.format(args) ,
Common.WINDOW_HEADER, JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
FileWriter logger = new FileWriter(new File(System.getProperty("java.io.tmpdir")).getAbsolutePath()+System.getProperty("file.separator")+ "ingest.log" );
if (liChoice == 0) {
props.setProperty("user", "Ingest.ContentModel", jcbContentModel.getSelectedItem().toString());
ProgressDialog progressDialog = new ProgressDialog( getCoreDialog(), Common.WINDOW_HEADER);
progressDialog.displayPercentageInProgressBar = true;
progressDialog.millisToDecideToPopup = 1;
progressDialog.millisToPopup = 1;
progressDialog.beginTask(res.getString("ingestcont"), files.size(), true);
fi = 0;
progressDialog.worked(1);
boolean onlyValidate = ((JCheckBox) getGuiComposite().getWidget("jcbSimulate")).isSelected();
String simulate = onlyValidate ? res.getString("ofsim") : "";
logger.write( new java.util.Date() +res.getString("start")+ simulate+res.getString("ofingest"));
JCheckBox jcbGenerated = ((JCheckBox) getGuiComposite().getWidget("jcbGenerated"));
JTextField jtfPID = ((JTextField) getGuiComposite().getWidget("jtfPID"));
for (int i = 0; i<files.size(); i++) {
String pid = (String)jcbNamespace.getSelectedItem()+(String)jcbUser.getSelectedItem();
progressDialog.setTaskName(res.getString("ingestof")+files.get(i)+" ...");
if (jcbGenerated.isSelected() && !jtfPID.getText().isEmpty()) {
pid = "o:"+jtfPID.getText();
if (files.size() == 1) {
if (Repository.exist(pid)) {
msgFmt = new MessageFormat(res.getString("double"));
Object[] args9 = {pid};
JOptionPane.showMessageDialog( getCoreDialog(), msgFmt.format(args9) , Common.WINDOW_HEADER, JOptionPane.INFORMATION_MESSAGE);
break;
}
pid = "$"+pid;
}
}
if(progressDialog.isCanceled()) {
break;
}
progressDialog.worked(1);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
if (model.contains("TEI")) {
TEI t = new TEI(logger, onlyValidate, true);
t.setUser((String)jcbUser.getSelectedItem());
t.set((String) files.get(i), true);
if (!t.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidtei"));
Object[] args1 = {new java.util.Date(), (String) files.get(i)};
logger.write( msgFmt.format(args1));
continue;
}
Split pcm = new Split(model);
if (t.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
t.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {t.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args2 = {new java.util.Date(), pid, t.getName()};
logger.write( msgFmt.format(args2));
} else {
if (!Repository.exist(t.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ t.getPID(), res.getString("notitle"));
if (!Common.exist(t.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), t.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args3 = {new java.util.Date(), t.getPID(), t.getName()};
logger.write( msgFmt.format(args3));
} else {
if (t.getPID().contains(":"+(String)jcbUser.getSelectedItem()+".") || groups.contains("administrator")) {
msgFmt = new MessageFormat(res.getString("objingrefr"));
Object[] args4 = {new java.util.Date(), t.getPID(), t.getName()};
logger.write( msgFmt.format(args4));
fa++;
} else {
msgFmt = new MessageFormat(res.getString("denied"));
Object[] args5 = {new java.util.Date(), (String)jcbUser.getSelectedItem(), t.getPID()};
logger.write( msgFmt.format(args5));
continue;
}
}
}
t.validate(pcm.get(), moGA);
Common.genQR(user, t.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(t.getPID(), "TEI_SOURCE", "text/xml", t.toString());
} catch (Exception q) {
log.error(q.getLocalizedMessage(),q);
}
}
if (model.contains("MEI")) {
MEI m = new MEI(logger, onlyValidate, true);
m.setUser((String)jcbUser.getSelectedItem());
m.set((String) files.get(i), true);
if (!m.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidtei"));
Object[] args1 = {new java.util.Date(), (String) files.get(i)};
logger.write( msgFmt.format(args1));
continue;
}
Split pcm = new Split(model);
if (m.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
m.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {m.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args2 = {new java.util.Date(), pid, m.getName()};
logger.write( msgFmt.format(args2));
} else {
if (!Repository.exist(m.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ m.getPID(), res.getString("notitle"));
if (!Common.exist(m.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), m.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args3 = {new java.util.Date(), m.getPID(), m.getName()};
logger.write( msgFmt.format(args3));
} else {
if (m.getPID().contains(":"+(String)jcbUser.getSelectedItem()+".") || groups.contains("administrator")) {
msgFmt = new MessageFormat(res.getString("objingrefr"));
Object[] args4 = {new java.util.Date(), m.getPID(), m.getName()};
logger.write( msgFmt.format(args4));
fa++;
} else {
msgFmt = new MessageFormat(res.getString("denied"));
Object[] args5 = {new java.util.Date(), (String)jcbUser.getSelectedItem(), m.getPID()};
logger.write( msgFmt.format(args5));
continue;
}
}
}
m.validate(pcm.get(), moGA);
Common.genQR(user, m.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(m.getPID(), "MEI_SOURCE", "text/xml", m.toString());
} catch (Exception q) {
log.error(q.getLocalizedMessage(),q);
}
}
if (model.contains("METS") ) {
METS m = new METS(logger, onlyValidate, true);
m.setUser((String)jcbUser.getSelectedItem());
m.set((String) files.get(i), true);
if (!m.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidmets"));
Object[] args6 = {new java.util.Date(), (String) files.get(i)};
logger.write( msgFmt.format(args6));
continue;
}
Split pcm = new Split(model);
if (m.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
m.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {m.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args7 = {new java.util.Date(), pid, m.getName()};
logger.write( msgFmt.format(args7));
} else {
if (!Repository.exist(m.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ m.getPID(), res.getString("notitle"));
if (!Common.exist(m.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), m.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args8 = {new java.util.Date(), m.getPID(), m.getName()};
logger.write( msgFmt.format(args8));
} else {
msgFmt = new MessageFormat(res.getString("objingrefr"));
Object[] args9 = {new java.util.Date(), m.getPID(), m.getName()};
logger.write( msgFmt.format(args9));
fa++;
}
}
m.ingestImages();
m.write();
m.createMapping(pcm.get(), moGA);
Common.genQR(user, m.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(m.getPID(), "METS_SOURCE", "text/xml", m.toString());
} catch (Exception q) {}
}
if (model.contains("LIDO")) {
LIDO l = new LIDO(logger, onlyValidate, true);
l.setUser((String)jcbUser.getSelectedItem());
l.set((String) files.get(i), true);
if (!l.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidtei"));
Object[] args1 = {new java.util.Date(), (String) files.get(i)};
logger.write( msgFmt.format(args1));
continue;
}
Split pcm = new Split(model);
if (l.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
l.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {l.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args2 = {new java.util.Date(), pid, l.getName()};
logger.write( msgFmt.format(args2));
} else {
if (!Repository.exist(l.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ l.getPID(), res.getString("notitle"));
if (!Common.exist(l.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), l.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objing"));
Object[] args3 = {new java.util.Date(), l.getPID(), l.getName()};
logger.write( msgFmt.format(args3));
} else {
if (l.getPID().contains(":"+(String)jcbUser.getSelectedItem()+".") || groups.contains("administrator")) {
msgFmt = new MessageFormat(res.getString("objingrefr"));
Object[] args4 = {new java.util.Date(), l.getPID(), l.getName()};
logger.write( msgFmt.format(args4));
fa++;
} else {
msgFmt = new MessageFormat(res.getString("denied"));
Object[] args5 = {new java.util.Date(), (String)jcbUser.getSelectedItem(), l.getPID()};
logger.write( msgFmt.format(args5));
continue;
}
}
}
l.validate(pcm.get(), moGA);
Common.genQR(user, l.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(l.getPID(), "LIDO_SOURCE", "text/xml", l.toString());
} catch (Exception q) {
log.error(q.getLocalizedMessage(),q);
}
}
}
logger.write("\n"+ new java.util.Date() +res.getString("end")+simulate+res.getString("ofingest")+new Integer(fi).toString().trim() + res.getString("ingested")+ new Integer(fa).toString().trim() + res.getString("refreshed"));
logger.close();
logfile = new File(System.getProperty("java.io.tmpdir")).getAbsolutePath()+System.getProperty("file.separator")+"ingest.log";
JOptionPane.showMessageDialog( getCoreDialog(), new Integer(fi).toString()+ res.getString("ingested") + new Integer(fa).toString().trim() + res.getString("refreshed") +res.getString("details")+logfile, Common.WINDOW_HEADER, JOptionPane.INFORMATION_MESSAGE );
getGuiComposite().getWidget("jbShowLogfile").setEnabled(true);
}
} catch (Exception ex) {
}
finally {
getCoreDialog().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}
}.start();
}
public void handleIngestFromExcelButton(ActionEvent e)
throws Exception {
new Thread() {
public void run() {
FileWriter logger = null;
String model = "";
EXCEL excel = null;;
try {
CPropertyService props = (CPropertyService) CServiceProvider.getService(ServiceNames.PROPERTIES);
TemplateSubsystem temps = (TemplateSubsystem) CServiceProvider.getService(ServiceNames.TEMPLATESUBSYSTEM);
JComboBox jcbContentModel = ((JComboBox) getGuiComposite().getWidget("jcbContentModel"));
JComboBox jcbNamespace = ((JComboBox) getGuiComposite().getWidget("jcbNamespace"));
JComboBox jcbUser = ((JComboBox) getGuiComposite().getWidget("jcbUser"));
model = (String)jcbContentModel.getSelectedItem();
getCoreDialog().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
int fa=0;
IngestExcelDialog loExcel;
loExcel = (IngestExcelDialog) CServiceProvider.getService(DialogNames.INGESTEXCEL_DIALOG);
loExcel.open();
if (!loExcel.isSubmit() || loExcel.getTemplate().isEmpty() || loExcel.getTable().isEmpty()) {
return;
}
excel = new EXCEL(loExcel.getTable(), loExcel.getTemplate());
if (excel.init(0)) {
MessageFormat msgFmt = new MessageFormat(res.getString("objcrea"));
Object[] args = {new Integer(excel.getRowCount()).toString(), model, ""};
logger = new FileWriter(new File(System.getProperty("java.io.tmpdir")).getAbsolutePath()+System.getProperty("file.separator")+ "ingest.log" );
int liChoice = JOptionPane.showConfirmDialog(null, msgFmt.format(args) ,
Common.WINDOW_HEADER, JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if (liChoice == 0) {
props.setProperty("user", "Ingest.ContentModel", jcbContentModel.getSelectedItem().toString());
ProgressDialog progressDialog = new ProgressDialog( getCoreDialog(), Common.WINDOW_HEADER);
progressDialog.displayPercentageInProgressBar = true;
progressDialog.millisToDecideToPopup = 1;
progressDialog.millisToPopup = 1;
progressDialog.beginTask(res.getString("ingestcont"), excel.getRowCount(), true);
fi = 0;
progressDialog.worked(1);
boolean onlyValidate = ((JCheckBox) getGuiComposite().getWidget("jcbSimulate")).isSelected();
String simulate = onlyValidate ? res.getString("ofsim") : "";
logger.write( res.getString("start")+ simulate+res.getString("ofingest") +new java.util.Date() );
int i = 0;
while (excel.hasNext()) {
String pid = (String)jcbNamespace.getSelectedItem()+(String)jcbUser.getSelectedItem();
i++;
if(progressDialog.isCanceled()) {
break;
}
progressDialog.worked(1);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
if (model.indexOf("TEI") > -1) {
TEI t = new TEI(logger, onlyValidate, false);
t.setUser((String)jcbUser.getSelectedItem());
t.set(excel.toString());
if (!t.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidrtei"));
Object[] args0 = {new java.util.Date(),new Integer(i).toString()};
logger.write( msgFmt.format(args0) );
continue;
}
Split pcm = new Split(model);
if (t.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
t.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {t.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objingr"));
Object[] args1 = {new java.util.Date(), pid,new Integer(i).toString() };
logger.write(msgFmt.format(args1) );
} else {
if (!Repository.exist(t.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ t.getPID(), res.getString("notitle"));
if (!Common.exist( t.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), t.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objingr"));
Object[] args2 = {new java.util.Date(), t.getPID(),new Integer(i).toString()};
logger.write(msgFmt.format(args2));
} else {
if (t.getPID().contains(":"+(String)jcbUser.getSelectedItem()+".") || groups.contains("administrator")) {
msgFmt = new MessageFormat(res.getString("objingrrefr"));
Object[] args3 = {new java.util.Date(), t.getPID(), new Integer(i).toString() };
logger.write( msgFmt.format(args3));
fa++;
} else {
msgFmt = new MessageFormat(res.getString("denied"));
Object[] args4 = {new java.util.Date(), (String)jcbUser.getSelectedItem(), t.getPID() };
logger.write( msgFmt.format(args4));
continue;
}
}
}
t.validate(pcm.get(), moGA);
Common.genQR(user, t.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(t.getPID(), "TEI_SOURCE", "text/xml", t.toString());
} catch (Exception q) {}
}
if (model.contains("METS") ) {
METS m = new METS(logger, onlyValidate, false);
m.setUser((String)jcbUser.getSelectedItem());
m.set(excel.toString());
if (!m.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidrmets"));
Object[] args5 = {new java.util.Date(), new Integer(i+1).toString()};
logger.write( msgFmt.format(args5));
continue;
}
Split pcm = new Split(model);
if (m.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
m.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {m.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objingr"));
Object[] args6 = {new java.util.Date(), pid, new Integer(i+1).toString()};
logger.write( msgFmt.format(args6));
} else {
if (!Repository.exist(m.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ m.getPID(), res.getString("notitle"));
if (!Common.exist(m.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), m.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objingr"));
Object[] args7 = {new java.util.Date(), m.getPID(), new Integer(i+1).toString()};
logger.write( msgFmt.format(args7));
} else {
if (m.getPID().contains(":"+(String)jcbUser.getSelectedItem()+".") || groups.contains("administrator")) {
msgFmt = new MessageFormat(res.getString("objingrrefr"));
Object[] args3 = {new java.util.Date(), m.getPID(), new Integer(i).toString() };
logger.write( msgFmt.format(args3));
fa++;
} else {
msgFmt = new MessageFormat(res.getString("denied"));
Object[] args4 = {new java.util.Date(), (String)jcbUser.getSelectedItem(), m.getPID() };
logger.write( msgFmt.format(args4));
continue;
}
}
}
m.ingestImages();
m.write();
m.createMapping(pcm.get(),moGA);
Common.genQR(user, m.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(m.getPID(), "METS_SOURCE", "text/xml", m.toString());
} catch (Exception q) {}
}
if (model.indexOf("LIDO") > -1) {
LIDO l = new LIDO(logger, onlyValidate, false);
l.setUser((String)jcbUser.getSelectedItem());
l.set(excel.toString());
if (!l.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidrtei"));
Object[] args0 = {new java.util.Date(),new Integer(i).toString()};
logger.write( msgFmt.format(args0) );
continue;
}
Split pcm = new Split(model);
if (l.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
l.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {l.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objingr"));
Object[] args1 = {new java.util.Date(), pid,new Integer(i).toString() };
logger.write(msgFmt.format(args1) );
} else {
if (!Repository.exist(l.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ l.getPID(), res.getString("notitle"));
if (!Common.exist(l.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), l.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objingr"));
Object[] args2 = {new java.util.Date(), l.getPID(),new Integer(i).toString()};
logger.write(msgFmt.format(args2));
} else {
if (l.getPID().contains(":"+(String)jcbUser.getSelectedItem()+".") || groups.contains("administrator")) {
msgFmt = new MessageFormat(res.getString("objingrrefr"));
Object[] args3 = {new java.util.Date(), l.getPID(), new Integer(i).toString() };
logger.write( msgFmt.format(args3));
fa++;
} else {
msgFmt = new MessageFormat(res.getString("denied"));
Object[] args4 = {new java.util.Date(), (String)jcbUser.getSelectedItem(), l.getPID() };
logger.write( msgFmt.format(args4));
continue;
}
}
}
l.validate(pcm.get(), moGA);
Common.genQR(user, l.getPID());
try {
if (!onlyValidate) Repository.modifyDatastreamByValue(l.getPID(), "LIDO_SOURCE", "text/xml", l.toString());
} catch (Exception q) {}
}
if (model.contains("Resource") ) {
DC d = new DC(logger, onlyValidate, false);
d.set(excel.toString());
if (!d.isValid()) {
msgFmt = new MessageFormat(res.getString("novalidrmets"));
Object[] args5 = {new java.util.Date(), new Integer(i+1).toString()};
logger.write( msgFmt.format(args5));
continue;
}
Split pcm = new Split(model);
if (d.getPID().isEmpty()) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), pid.trim(), res.getString("notitle"));
d.setPID(pid);
if (!Common.exist(pid)) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), pid};
logger.write( msgFmt.format(args0) );
continue;
}
} else {d.setPID("obj:generated");}
fi++;
msgFmt = new MessageFormat(res.getString("objingr"));
Object[] args6 = {new java.util.Date(), pid, new Integer(i+1).toString()};
logger.write( msgFmt.format(args6));
} else {
if (!Repository.exist(d.getPID())) {
if (!onlyValidate) {
pid = temps.cloneTemplate("info:fedora/"+ pcm.get(), (String)jcbUser.getSelectedItem(), "$"+ d.getPID(), res.getString("notitle"));
if (!Common.exist( d.getPID())) {
msgFmt = new MessageFormat(res.getString("createfail"));
Object[] args0 = {new java.util.Date(), d.getPID()};
logger.write( msgFmt.format(args0) );
continue;
}
}
fi++;
msgFmt = new MessageFormat(res.getString("objingr"));
Object[] args7 = {new java.util.Date(), d.getPID(), new Integer(i+1).toString()};
logger.write( msgFmt.format(args7));
} else {
if (d.getPID().contains(":"+(String)jcbUser.getSelectedItem()+".") || groups.contains("administrator")) {
msgFmt = new MessageFormat(res.getString("objingrrefr"));
Object[] args3 = {new java.util.Date(), d.getPID(), new Integer(i).toString() };
logger.write( msgFmt.format(args3));
fa++;
} else {
msgFmt = new MessageFormat(res.getString("denied"));
Object[] args4 = {new java.util.Date(), (String)jcbUser.getSelectedItem(), d.getPID() };
logger.write( msgFmt.format(args4));
continue;
}
}
}
Common.genQR(user, d.getPID());
try {
if (!onlyValidate) {
Repository.modifyDatastreamByValue(d.getPID(), "DC", "text/xml", d.toString());
String url = d.getURL();
if (url != null) {
Repository.modifyDatastream(d.getPID(), "URL", null, "R", url);
}
}
} catch (Exception q) {}
}
}
progressDialog.setCanceled(true);
logger.write("\n" +res.getString("end")+simulate+res.getString("ofingest") + new java.util.Date() + ". " + new Integer(fi).toString().trim() + res.getString("ingested")+ new Integer(fa).toString().trim() + res.getString("refreshed"));
logger.close();
JOptionPane.showMessageDialog( getCoreDialog(), new Integer(fi).toString()+ res.getString("ingested")+ new Integer(fa).toString().trim() + res.getString("refreshed") + res.getString("details")+""+System.getProperty( "file.separator" )+"ingest.log" , Common.WINDOW_HEADER, JOptionPane.INFORMATION_MESSAGE);
logfile = new File(System.getProperty("java.io.tmpdir")).getAbsolutePath()+System.getProperty("file.separator")+"ingest.log";
getGuiComposite().getWidget("jbShowLogfile").setEnabled(true);
excel.destroy();
}
} else {
MessageFormat msgFmt = new MessageFormat(res.getString("excelformat"));
Object[] args = {loExcel.getTable()};
JOptionPane.showMessageDialog( getCoreDialog(), msgFmt.format(args), Common.WINDOW_HEADER, JOptionPane.INFORMATION_MESSAGE);
}
} catch (Exception ex) {
try {
logger.write(new java.util.Date() +" "+ex.getLocalizedMessage()+"\n");
logger.close();
} catch (Exception ez) {
}
}
finally {
getCoreDialog().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}
}.start();
}
/*
pid = "obj:bag."+idno.getText().substring(17).replace(":", ".");
bibtex = "<file xmlns=\"http://bibtexml.sf.net/\">"+
"<entry id=\""+pid+"\">"+
"<book>"+
"<author>"+author+"</author>"+
"<title>"+title+"</title>"+
"<type>"+issuance+"</type>"+
"<publisher>"+publisher+"</publisher>"+
"<owner>"+owner+"</owner>"+
"<year>"+year+"</year>"+
"<address>"+place+"</address>"+
"</book>"+
"</entry>"+
"</file>";
*/
/**
* Description of the Method
*
* @param aoHandler Description of the Parameter
*/
public void handlerRemoved(CEventListener aoHandler) {
}
/**
* Description of the Method
*/
protected void cleaningUp() {
}
public void show()
throws CShowFailedException {
try {
se = (Session) CServiceProvider.getService( ServiceNames.SESSIONCLASS );
org.emile.cirilo.dialog.CBoundSerializer.load(this.getCoreDialog(), se.getIngestDialogProperties(), (JTable) null);
CPropertyService props = (CPropertyService) CServiceProvider.getService( ServiceNames.PROPERTIES );
String p = props.getProperty("user", "METS.CreateFromJPEG");
createFromJPEG = p != null && p.equals("1");
p = props.getProperty("user", "Ingest.ContentModel");
if (p != null) {
JComboBox jcbContentModel = ((JComboBox) getGuiComposite().getWidget("jcbContentModel"));
jcbContentModel.setSelectedItem(p);
set();
}
} catch (Exception e) {
}
}
/**
* Description of the Method
*
* @exception COpenFailedException Description of the Exception
*/
protected void opened() throws COpenFailedException {
try {
res =(ResourceBundle) CServiceProvider.getService(ServiceNames.RESOURCES);
moGA = (CDefaultGuiAdapter)getGuiAdapter();
new DCMI().preallocate(moGA);
CDialogTools.createButtonListener(this, "jbClose", "handleCancelButton");
CDialogTools.createButtonListener(this, "jbReset", "handleResetButton");
CDialogTools.createButtonListener(this, "jcbGenerated", "handleCBGenerated");
CDialogTools.createButtonListener(this, "jbIngest", "handleIngestFromFilesystemButton");
CDialogTools.createButtonListener(this, "jbImport", "handleIngestFromExistButton");
CDialogTools.createButtonListener(this, "jbEXCEL", "handleIngestFromExcelButton");
CDialogTools.createButtonListener(this, "jbShowLogfile", "handleShowLogfileButton");
JComboBox jcbContentModel = ((JComboBox) getGuiComposite().getWidget("jcbContentModel"));
JComboBox jcbUser = ((JComboBox) getGuiComposite().getWidget("jcbUser"));
JCheckBox jcbGenerated = ((JCheckBox) getGuiComposite().getWidget("jcbGenerated"));
JTextField jtfPID = ((JTextField) getGuiComposite().getWidget("jtfPID"));
groups = (ArrayList) CServiceProvider.getService(ServiceNames.MEMBER_LIST);
user = (User) CServiceProvider.getService(ServiceNames.CURRENT_USER);
List<String> ds = Repository.getTemplates(user.getUser(),groups.contains("administrator"));
for (String s: ds) {
if (!s.isEmpty() && (s.contains("TEI") || s.contains("MEI") || s.contains("METS") || s.contains("LIDO") || s.contains("Resource") || s.contains("cirilo:Ontology") )) jcbContentModel.addItem(s);
}
boolean contains = false;
List<String> users = Repository.getUsers();
for (String s : users) {
if (!s.isEmpty()) {
jcbUser.addItem(s);
if (!contains) if (s.equals(user.getUser())) contains = true;
}
}
if (!contains) jcbUser.addItem(user.getUser());
jcbUser.setSelectedItem(user.getUser());
jcbUser.setEnabled(groups.contains("administrator"));
jtfPID.setEnabled(groups.contains("administrator"));
jcbGenerated.setEnabled(groups.contains("administrator"));
getGuiComposite().getWidget("jbShowLogfile").setEnabled(false);
new CItemListener((JComboBox) getGuiComposite().getWidget("jcbContentModel"), this, "handleCMComboBox");
set();
} catch (Exception ex) {
log.error(ex.getLocalizedMessage(),ex);
throw new COpenFailedException(ex);
}
}
private void treeWalk(File file, boolean mode, String model) {
try {
if (file.isDirectory()) {
File[] xml = file.listFiles(new XMLFilter());
if (mode) createFromJPEG = (xml.length == 0);
if (xml.length == 0 && createFromJPEG) {
File[] images = file.listFiles(new JPGFilter());
if (images.length > 0) {
FileOutputStream fos = new FileOutputStream( file.getAbsolutePath()+File.separator+"mets.xml" );
BufferedWriter os = new BufferedWriter(new OutputStreamWriter( fos, "UTF-8" ) );
os.write(book);
os.close();
}
}
File[] children = file.listFiles();
for (int i = 0; i < children.length; i++) {
treeWalk(children[i],false, model);
}
} else if (file.getAbsolutePath().toLowerCase().endsWith(".xml") || file.getAbsolutePath().toLowerCase().endsWith(".docx")|| file.getAbsolutePath().toLowerCase().endsWith(".odt")) {
files.add(file.getAbsolutePath());
if (model.contains("Ontology")) {
rdfs.set(file.getAbsolutePath());
}
}
} catch (Exception e) {log.error(e.getLocalizedMessage(),e); }
}
private void treeWalk(String URI, String path, String user, String passwd) {
try {
org.xmldb.api.base.Collection collection = DatabaseManager.getCollection( URI + path , user, passwd);
try {
String[] collections = collection.listChildCollections();
for (int i = 0; i < collections.length; i++) {
treeWalk(URI, path+"/"+collections[i], user, passwd);
}
} catch (Exception ex) {
}
try {
String[] members = collection.listResources();
for (int i = 0; i < members.length; i++) {
if (members[i].toLowerCase().contains(".xml"))
files.add(path+"/"+members[i]);
}
} catch (Exception ex) {}
collection.close();
} catch (Exception e){}
}
class JPGFilter implements FilenameFilter
{
public boolean accept( File f, String s )
{
s=s.toLowerCase();
return (s.endsWith( ".jpg" ) || s.endsWith( ".jpeg" ) || s.endsWith( ".tif" ) || s.endsWith( ".tiff" )) && !s.startsWith(".");
}
}
class XMLFilter implements FilenameFilter
{
public boolean accept( File f, String s )
{
return s.toLowerCase().endsWith( ".xml" ) && !s.startsWith(".");
}
}
private static String book = "<book xmlns=\"http://gams.uni-graz.at/viewer\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><title>unknown</title><author>unknown</author><structure/></book>";
private static String importpath;
private static ArrayList<String> files;
private static ArrayList<String> pids;
private RDF rdfs;
private String logfile;
private static int fi;
private CDefaultGuiAdapter moGA;
private User user;
private ArrayList<String> groups;
private Session se;
private String bibtex;
private ResourceBundle res;
private boolean createFromJPEG;
}