// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dq.writer.impl;
import org.apache.log4j.Logger;
import org.talend.commons.emf.FactoriesUtil;
import org.talend.commons.exception.LoginException;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.model.properties.Item;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.dataquality.properties.TDQBusinessRuleItem;
import org.talend.dataquality.rules.DQRule;
import org.talend.dq.helper.ProxyRepositoryManager;
import org.talend.dq.writer.AElementPersistance;
import org.talend.repository.RepositoryWorkUnit;
import org.talend.utils.sugars.ReturnCode;
import orgomg.cwm.objectmodel.core.ModelElement;
/**
* DOC bZhou class global comment. Detailled comment
*/
public class DQRuleWriter extends AElementPersistance {
static Logger log = Logger.getLogger(DQRuleWriter.class);
/**
* DOC bZhou DQRuleWriter constructor comment.
*/
DQRuleWriter() {
super();
}
/*
* (non-Javadoc)
*
* @see org.talend.dq.writer.AElementPersistance#addDependencies(orgomg.cwm.objectmodel.core.ModelElement)
*/
@Override
protected void addDependencies(ModelElement element) {
return;
}
/*
* (non-Javadoc)
*
* @see org.talend.dq.writer.AElementPersistance#getFileExtension()
*/
@Override
protected String getFileExtension() {
return FactoriesUtil.DQRULE;
}
@Override
public ReturnCode save(final Item item, final boolean careDependency) {
ReturnCode rc = new ReturnCode();
RepositoryWorkUnit<Object> repositoryWorkUnit = new RepositoryWorkUnit<Object>("save DQRule item") { //$NON-NLS-1$
@Override
protected void run() throws LoginException, PersistenceException {
TDQBusinessRuleItem ruleItem = (TDQBusinessRuleItem) item;
DQRule rule = ruleItem.getDqrule();
// MOD yyi 2012-02-07 TDQ-4621:Update dependencies(connection) when careDependency is true.
if (careDependency) {
saveWithDependencies(ruleItem, rule);
} else {
saveWithoutDependencies(ruleItem, rule);
}
}
};
repositoryWorkUnit.setAvoidUnloadResources(true);
ProxyRepositoryFactory.getInstance().executeRepositoryWorkUnit(repositoryWorkUnit);
try {
repositoryWorkUnit.throwPersistenceExceptionIfAny();
} catch (PersistenceException e) {
log.error(e, e);
rc.setOk(Boolean.FALSE);
rc.setMessage(e.getMessage());
}
return rc;
}
@Override
protected void notifyResourceChanges() {
ProxyRepositoryManager.getInstance().save();
}
/*
* (non-Javadoc)
*
* @see org.talend.dq.writer.AElementPersistance#removeDependencies(org.talend.core.model.properties.Item)
*/
@Override
protected ReturnCode removeDependencies(Item item) {
return new ReturnCode(true);
}
}