/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.uff.ic.oceano.ostra.service;
import br.uff.ic.oceano.core.exception.ObjetoNaoEncontradoException;
import br.uff.ic.oceano.ostra.dao.DataMiningResultDao;
import br.uff.ic.oceano.ostra.dao.impl.DataMiningResultDaoImpl;
import br.uff.ic.oceano.core.factory.ObjectFactory;
import br.uff.ic.oceano.core.service.PersistenceService;
import br.uff.ic.oceano.ostra.model.DataMiningResult;
import br.uff.ic.oceano.core.service.controletransacao.Transacional;
import br.uff.ic.oceano.ostra.model.DataMiningPattern;
import java.util.LinkedList;
import java.util.List;
/**
*
* @author DanCastellani
*/
public class DataMiningResultService implements PersistenceService {
public static final String SEPARATOR_ANTECESSOR_SUCESSOR_RULE = "==>";
//
private DataMiningResultDao dataMiningResultDao;
public void setup() {
dataMiningResultDao = ObjectFactory.getObjectWithDataBaseDependencies(DataMiningResultDaoImpl.class);
}
public DataMiningResultService() {
}
@Transacional
public void delete(DataMiningResult dataMiningResult) throws ObjetoNaoEncontradoException {
// dataMiningResult = dataMiningResultDao.getPorIdComLock(dataMiningResult.getId());
dataMiningResultDao.deleteBySql(dataMiningResult);
}
@Transacional
public void save(DataMiningResult dataMiningResult) {
dataMiningResult.prepare();
if (dataMiningResult.getId() == null) {
dataMiningResultDao.inclui(dataMiningResult);
} else {
dataMiningResultDao.altera(dataMiningResult);
}
}
@Transacional
public void updateDataBase() {
dataMiningResultDao.updateDataMiningResultResult();
}
public DataMiningResult getToDetailById(Long id) throws ObjetoNaoEncontradoException {
DataMiningResult dmr = dataMiningResultDao.getToDetailById(id);
dmr.setPrepared(true);
return dmr;
}
/**
* Removes the mined rules from the resultString.
* It is needed to save the result because most of the times, the result String is too long to be stored.
* @param dataMiningResult
*/
public static void cleanDataMiningResult(DataMiningResult dataMiningResult) {
//updates the data mining result so that it can be saved.
final String originalResult = dataMiningResult.getResultData();
final int indexOfRulesDeclaration = originalResult.indexOf("Best rules found:");
if (indexOfRulesDeclaration != -1) {
dataMiningResult.setResultData(originalResult.substring(0, indexOfRulesDeclaration).trim());
}
}
/**
*
* @return
*/
@Transacional
public List<DataMiningResult> getAll() {
return dataMiningResultDao.getAll();
}
}