package org.ariadne_eu.metadata.insert; import org.apache.log4j.Logger; import org.ariadne.config.PropertiesManager; import org.ariadne_eu.spi.SPIStub; import org.ariadne_eu.spi.SubmitMetadataRecord; import org.ariadne_eu.utils.config.RepositoryConstants; import be.cenorm.www.CreateSession; import be.cenorm.www.CreateSessionResponse; import be.cenorm.www.DestroySession; import be.cenorm.www.SqiSessionManagementStub; /** * Created by ben * Date: 13-sep-2007 * Time: 21:41:54 * To change this template use File | Settings | File Templates. */ public class InsertMetadataSpiForwardImpl extends InsertMetadataImpl { private static Logger log = Logger.getLogger(InsertMetadataExistDbImpl.class); private String smURI; private String spiURI; private String username; private String password; void initialize() { super.initialize(); smURI = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().MD_SPIFWD_SM_URL + "." + getLanguage()); if (smURI == null) smURI = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().MD_SPIFWD_SM_URL); spiURI = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().MD_SPIFWD_SPI_URL + "." + getLanguage()); if (spiURI == null) spiURI = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().MD_SPIFWD_SPI_URL); username = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().MD_SPIFWD_SM_USERNAME + "." + getLanguage()); if (username == null) username = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().MD_SPIFWD_SM_USERNAME); password = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().MD_SPIFWD_SM_PASSWORD + "." + getLanguage()); if (password == null) password = PropertiesManager.getInstance().getProperty(RepositoryConstants.getInstance().MD_SPIFWD_SM_PASSWORD); } /* * NOTE: Collection is not implemented! * * */ public synchronized void insertMetadata(String identifier, String metadata, String collection) throws InsertMetadataException{ try { SqiSessionManagementStub sm = new SqiSessionManagementStub(smURI); CreateSession createSession = new CreateSession(); createSession.setUserID(username); createSession.setPassword(password); CreateSessionResponse sessionM = sm.createSession(createSession); SPIStub spi = new SPIStub(spiURI); SubmitMetadataRecord submitMetadataRecord = new SubmitMetadataRecord(); submitMetadataRecord.setGlobalIdentifier(identifier); submitMetadataRecord.setTargetSessionID(sessionM.getCreateSessionReturn()); submitMetadataRecord.setMetadata(metadata); spi.submitMetadataRecord(submitMetadataRecord); if(!sessionM.getCreateSessionReturn().equals("")) { DestroySession destroySession = new DestroySession(); destroySession.setSessionID(sessionM.getCreateSessionReturn()); sm.destroySession(destroySession); } } catch (Exception e) { log.error("insertMetadata failed, identifier: \""+identifier+"\", metadata: \""+metadata+"\"", e); throw new InsertMetadataException(e); } } }