161 lines
5.8 KiB
Java
Executable File
161 lines
5.8 KiB
Java
Executable File
/*
|
|
* Copyright (C) 2001-2004 Red Hat Inc. All Rights Reserved.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public License
|
|
* as published by the Free Software Foundation; either version 2.1 of
|
|
* the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
package com.arsdigita.london.terms.ui.admin;
|
|
|
|
|
|
import com.arsdigita.bebop.PageState;
|
|
import com.arsdigita.categorization.Category;
|
|
import com.arsdigita.domain.DeleteException;
|
|
import com.arsdigita.domain.DomainObject;
|
|
import com.arsdigita.london.terms.Domain;
|
|
import com.arsdigita.london.terms.Terms;
|
|
import com.arsdigita.london.terms.indexing.Indexer;
|
|
import com.arsdigita.london.util.ui.AbstractDomainObjectDetails;
|
|
import com.arsdigita.london.util.ui.ErrorMessage;
|
|
import com.arsdigita.london.util.ui.event.DomainObjectActionAbortedException;
|
|
import com.arsdigita.london.util.ui.event.DomainObjectActionEvent;
|
|
import com.arsdigita.london.util.ui.event.DomainObjectActionListener;
|
|
import com.arsdigita.london.util.ui.parameters.DomainObjectParameter;
|
|
import com.arsdigita.xml.Element;
|
|
|
|
import java.util.Set;
|
|
|
|
import org.apache.log4j.Logger;
|
|
|
|
|
|
/**
|
|
*
|
|
*
|
|
*/
|
|
public class DomainDetails extends AbstractDomainObjectDetails {
|
|
private static final Logger s_log =
|
|
Logger.getLogger( DomainDetails.class );
|
|
|
|
private DomainObjectParameter m_domain;
|
|
private ErrorMessage m_errorMessage = new ErrorMessage();
|
|
|
|
public static final String ACTION_EDIT = "edit";
|
|
public static final String ACTION_DELETE = "delete";
|
|
public static final String ACTION_TRAIN = "train";
|
|
public static final String ACTION_UNTRAIN = "untrain";
|
|
|
|
public DomainDetails(DomainObjectParameter domain) {
|
|
super("domainDetails",
|
|
Terms.XML_PREFIX,
|
|
Terms.XML_NS);
|
|
setRedirecting(true);
|
|
|
|
m_domain = domain;
|
|
|
|
registerDomainObjectAction(ACTION_EDIT);
|
|
registerDomainObjectAction(ACTION_DELETE);
|
|
registerDomainObjectAction(ACTION_TRAIN);
|
|
registerDomainObjectAction(ACTION_UNTRAIN);
|
|
|
|
addDomainObjectActionListener(
|
|
ACTION_DELETE,
|
|
new DomainObjectActionListener() {
|
|
@Override
|
|
public void actionPerformed(DomainObjectActionEvent e) {
|
|
PageState ps = e.getPageState();
|
|
|
|
DomainObject dobj = e.getObject();
|
|
|
|
if( s_log.isDebugEnabled() ) {
|
|
s_log.debug( "Deleting " + dobj.getOID() );
|
|
}
|
|
|
|
try {
|
|
dobj.delete();
|
|
} catch( DeleteException ex ) {
|
|
Set properties = ex.getDependencyProperties();
|
|
|
|
if( properties.contains( Category.OWNER_USE_CONTEXT ) ) {
|
|
m_errorMessage.addMessage( ps, "Unable to delete this domain because it still contains one or more mappings below. You can manually remove these by clicking on the 'remove' links under 'Domain Usage'." );
|
|
properties.remove( Category.OWNER_USE_CONTEXT );
|
|
|
|
s_log.debug( "Use context mapping would cause failure" );
|
|
}
|
|
|
|
// A catchall. If a specific message isn't caught above,
|
|
// dump the raw error message. It's reasonably useful.
|
|
if( !properties.isEmpty() ) {
|
|
m_errorMessage.addMessage( ps, ex.getMessage() );
|
|
|
|
s_log.debug( "Other error would cause failure" );
|
|
}
|
|
|
|
throw new DomainObjectActionAbortedException
|
|
( "Error deleting object" + dobj.getOID() );
|
|
}
|
|
|
|
ps.setValue(m_domain, null);
|
|
s_log.debug( "Delete succeeded" );
|
|
}
|
|
});
|
|
|
|
addDomainObjectActionListener(ACTION_TRAIN, new DomainObjectActionListener() {
|
|
@Override
|
|
public void actionPerformed(DomainObjectActionEvent e) {
|
|
Domain domain = (Domain) e.getObject();
|
|
Indexer indexer = Indexer.retrieve(domain);
|
|
if (indexer == null) {
|
|
indexer = Indexer.create(domain);
|
|
}
|
|
indexer.train();
|
|
}
|
|
});
|
|
|
|
addDomainObjectActionListener(ACTION_UNTRAIN, new DomainObjectActionListener() {
|
|
@Override
|
|
public void actionPerformed(DomainObjectActionEvent e) {
|
|
Domain domain = (Domain) e.getObject();
|
|
Indexer indexer = Indexer.retrieve(domain);
|
|
if (indexer != null) {
|
|
indexer.delete();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param state
|
|
* @return
|
|
*/
|
|
@Override
|
|
protected DomainObject getDomainObject(PageState state) {
|
|
return (DomainObject)state.getValue(m_domain);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param ps
|
|
* @param parent
|
|
* @param dobj
|
|
*/
|
|
@Override
|
|
public void generateActionXML( PageState ps, Element parent,
|
|
DomainObject dobj ) {
|
|
s_log.debug( "In generateActionXML" );
|
|
m_errorMessage.generateXML( ps, parent );
|
|
super.generateActionXML( ps, parent, dobj );
|
|
}
|
|
}
|