/*
* (c) Copyright 2010-2011 AgileBirds
*
* This file is part of OpenFlexo.
*
* OpenFlexo is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* OpenFlexo 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openflexo.fps.controller.action;
import java.util.EventObject;
import java.util.logging.Logger;
import org.openflexo.components.AskParametersDialog;
import org.openflexo.foundation.action.FlexoActionFinalizer;
import org.openflexo.foundation.action.FlexoActionInitializer;
import org.openflexo.foundation.param.CheckboxParameter;
import org.openflexo.foundation.param.EnumDropDownParameter;
import org.openflexo.foundation.param.IntegerParameter;
import org.openflexo.foundation.param.TextFieldParameter;
import org.openflexo.fps.CVSRepository;
import org.openflexo.fps.action.AddCVSRepository;
import org.openflexo.fps.action.CVSRefresh;
import org.openflexo.localization.FlexoLocalization;
import org.openflexo.view.controller.ActionInitializer;
import org.openflexo.view.controller.ControllerActionInitializer;
public class AddCVSRepositoryInitializer extends ActionInitializer {
private static final Logger logger = Logger.getLogger(ControllerActionInitializer.class.getPackage().getName());
AddCVSRepositoryInitializer(FPSControllerActionInitializer actionInitializer) {
super(AddCVSRepository.actionType, actionInitializer);
}
@Override
protected FPSControllerActionInitializer getControllerActionInitializer() {
return (FPSControllerActionInitializer) super.getControllerActionInitializer();
}
@Override
protected FlexoActionInitializer<AddCVSRepository> getDefaultInitializer() {
return new FlexoActionInitializer<AddCVSRepository>() {
@Override
public boolean run(EventObject e, AddCVSRepository action) {
TextFieldParameter paramName = new TextFieldParameter("name", "cvs_repository_name",
action.getName() == null ? FlexoLocalization.localizedForKey("new_repository") : action.getName());
TextFieldParameter hostName = new TextFieldParameter("hostName", "host_name", action.getHostName() == null ? ""
: action.getHostName());
TextFieldParameter repository = new TextFieldParameter("cvsRepositoryPath", "cvs_repository_path",
action.getRepository() == null ? "" : action.getRepository());
EnumDropDownParameter<CVSRepository.ConnectionType> connectionTypeParam = new EnumDropDownParameter<CVSRepository.ConnectionType>(
"connectionType", "connection_type", CVSRepository.ConnectionType.PServer, CVSRepository.ConnectionType.values());
connectionTypeParam.setShowReset(false);
IntegerParameter port = new IntegerParameter("port", "port_number", action.getPort());
port.setDepends("connectionType");
port.setConditional("connectionType=" + '"' + CVSRepository.ConnectionType.SSH.getStringRepresentation() + '"');
TextFieldParameter userName = new TextFieldParameter("userName", "user_name", action.getUserName() == null ? ""
: action.getUserName());
TextFieldParameter passwd = new TextFieldParameter("passwd", "password", action.getPasswd() == null ? ""
: action.getPasswd());
passwd.setIsPassword(true);
CheckboxParameter storePasswd = new CheckboxParameter("storePasswd", "store_password", action.getStorePasswd());
AskParametersDialog dialog = AskParametersDialog.createAskParametersDialog(getProject(), null,
FlexoLocalization.localizedForKey("declare_new_cvs_repository"),
FlexoLocalization.localizedForKey("enter_parameters_for_the_new_cvs_repository"), paramName, hostName, port,
repository, connectionTypeParam, userName, passwd, storePasswd);
if (dialog.getStatus() == AskParametersDialog.VALIDATE) {
action.setName(paramName.getValue());
action.setHostName(hostName.getValue());
action.setRepository(repository.getValue());
action.setConnectionType(connectionTypeParam.getValue());
action.setPort(port.getValue());
action.setUserName(userName.getValue());
action.setPassword(passwd.getValue());
action.setStorePasswd(storePasswd.getValue());
return true;
} else {
return false;
}
}
};
}
@Override
protected FlexoActionFinalizer<AddCVSRepository> getDefaultFinalizer() {
return new FlexoActionFinalizer<AddCVSRepository>() {
@Override
public boolean run(EventObject e, AddCVSRepository action) {
CVSRefresh.actionType.makeNewEmbeddedAction(action.getNewCVSRepository(), null, action).doAction();
return true;
}
};
}
/*protected FlexoExceptionHandler<AddCVSRepository> getDefaultExceptionHandler()
{
return new FlexoExceptionHandler<AddCVSRepository>() {
public boolean handleException(FlexoException exception, AddCVSRepository action) {
if (exception instanceof FlexoAuthentificationException) {
boolean tryAgain = true;
while (tryAgain) {
ReadOnlyTextFieldParameter userName = new ReadOnlyTextFieldParameter("userName", "user_name",
(action.getUserName() == null ? "" : action.getUserName()));
TextFieldParameter passwd = new TextFieldParameter("passwd", "password",
(action.getPasswd() == null ? "" : action.getPasswd()));
passwd.setIsPassword(true);
CheckboxParameter storePasswd = new CheckboxParameter("storePasswd", "store_password",action.getStorePasswd());
AskParametersDialog dialog = new AskParametersDialog(getProject(), FlexoLocalization
.localizedForKey("authentification_failed"), FlexoLocalization
.localizedForKey("reenter_password"),
userName,passwd,storePasswd);
if (dialog.getStatus() == AskParametersDialog.VALIDATE) {
action.getNewCVSRepository().setUserName(userName.getValue());
if (action.getConnectionType() == ConnectionType.PServer) {
action.getNewCVSRepository().setPassword(passwd.getValue(),true);
}
else if (action.getConnectionType() == ConnectionType.SSH) {
action.getNewCVSRepository().setPassword(passwd.getValue(),false);
}
action.getNewCVSRepository().setStorePassword(storePasswd.getValue());
try {
action.getNewCVSRepository()._retrieveModules();
tryAgain = false;
} catch (CommandAbortedException e) {
tryAgain = false;
e.printStackTrace();
} catch (IOException e) {
tryAgain = false;
e.printStackTrace();
} catch (CommandException e) {
tryAgain = false;
e.printStackTrace();
} catch (AuthenticationException e) {
tryAgain = true;
}
} else {
tryAgain = false;
}
}
return true;
}
return false;
}
};
}*/
}