package net.codjo.dataprocess.server.control;
import net.codjo.control.common.ControlContext;
import net.codjo.control.common.ControlException;
import net.codjo.control.common.Dictionary;
import net.codjo.control.common.MassControl;
import net.codjo.dataprocess.common.DataProcessConstants;
import net.codjo.dataprocess.common.userparam.DefaultUserCodec;
import net.codjo.dataprocess.common.userparam.User;
import net.codjo.dataprocess.server.dao.UserManagerDao;
import net.codjo.dataprocess.server.plugin.DataProcessServerPlugin;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Map;
import org.picocontainer.MutablePicoContainer;
/**
*
*/
public class CheckConcurrentImportControlStart implements MassControl {
private ControlContext context;
public void setContext(ControlContext context) {
this.context = context;
}
public void setControlTable(String tabName) {
}
public void control(Connection con, Dictionary dico) throws ControlException {
String result;
try {
result = new UserManagerDao(con).manageUser(DataProcessConstants.USER_COMMAND_LOAD,
context.getUser(), "");
if (result.startsWith("ERROR")) {
throw new RuntimeException(result);
}
User user = new DefaultUserCodec().fromXml(result);
String repository = user.getCurrentRepository();
MutablePicoContainer picoContainer = DataProcessServerPlugin.getPicoContainer();
DataProcessServerPlugin dataProcessServerPlugin = (DataProcessServerPlugin)picoContainer.
getComponentInstance(DataProcessServerPlugin.class);
Map<String, String> userImportMap = dataProcessServerPlugin.getConfiguration().getUserImportMap();
String user2 = userImportMap.get(repository);
if (user2 != null) {
throw new IllegalAccessError(
"Import impossible car un autre import lanc� par " + user2
+ " est d�j� en cours pour le repository " + repository);
}
else {
userImportMap.put(repository, context.getUser());
}
}
catch (SQLException ex) {
throw new RuntimeException(ex);
}
}
}