/******************************************************************************* * Copyright (c) 2012 OpenLegacy Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * OpenLegacy Inc. - initial API and implementation *******************************************************************************/ package org.openlegacy.designtime.terminal.analyzer.modules.login; import org.openlegacy.designtime.terminal.analyzer.ScreenFact; import org.openlegacy.designtime.terminal.analyzer.ScreenFactProcessor; import org.openlegacy.designtime.terminal.analyzer.support.ScreenEntityDefinitionsBuilderUtils; import org.openlegacy.designtime.terminal.model.ScreenEntityDesigntimeDefinition; import org.openlegacy.modules.login.Login; import org.openlegacy.terminal.TerminalField; import org.openlegacy.terminal.TerminalPosition; import org.openlegacy.terminal.definitions.SimpleScreenFieldDefinition; import org.openlegacy.utils.ClassUtils; import javax.inject.Inject; public class LoginScreenFactProcessor implements ScreenFactProcessor { @Inject private ScreenEntityDefinitionsBuilderUtils screenEntityDefinitionsBuilderUtils; private String userFieldName = Login.USER_FIELD_NAME; private String passwordFieldName = Login.PASSWORD_FIELD_NAME; private String errorFieldName = Login.ERROR_FIELD_NAME; public void process(ScreenEntityDesigntimeDefinition screenEntityDefinition, ScreenFact screenFact) { LoginScreenFact loginScreenFact = (LoginScreenFact)screenFact; screenEntityDefinition.setType(Login.LoginEntity.class); screenEntityDefinition.getReferredClasses().add(ClassUtils.getImportDeclaration(Login.LoginEntity.class)); SimpleScreenFieldDefinition userFieldDefinition = (SimpleScreenFieldDefinition)screenEntityDefinitionsBuilderUtils.addField( screenEntityDefinition, loginScreenFact.getUserField(), loginScreenFact.getUserLabelField()); ScreenEntityDefinitionsBuilderUtils.defineFieldType(screenEntityDefinition, userFieldDefinition, Login.UserField.class); // set user field name to fixed name userFieldDefinition.setName(userFieldName); TerminalField passwordLabelField = loginScreenFact.getPasswordLabelField(); SimpleScreenFieldDefinition passwordFieldDefinition = null; if (passwordLabelField != null) { passwordFieldDefinition = (SimpleScreenFieldDefinition)screenEntityDefinitionsBuilderUtils.addField( screenEntityDefinition, loginScreenFact.getPasswordField(), passwordLabelField); // set password field name to fixed name passwordFieldDefinition.setName(passwordFieldName); } else { passwordFieldDefinition = (SimpleScreenFieldDefinition)screenEntityDefinitionsBuilderUtils.addField( screenEntityDefinition, loginScreenFact.getPasswordField(), passwordLabelField); } ScreenEntityDefinitionsBuilderUtils.defineFieldType(screenEntityDefinition, passwordFieldDefinition, Login.PasswordField.class); passwordFieldDefinition.setPassword(true); TerminalPosition errorFieldPosition = loginScreenFact.getErrorPosition(); if (errorFieldPosition != null) { SimpleScreenFieldDefinition screenFieldDefinition = new SimpleScreenFieldDefinition(); screenFieldDefinition.setName(errorFieldName); ScreenEntityDefinitionsBuilderUtils.defineFieldType(screenEntityDefinition, screenFieldDefinition, Login.ErrorField.class); screenFieldDefinition.setPosition(errorFieldPosition); screenEntityDefinition.getFieldsDefinitions().put(errorFieldName, screenFieldDefinition); } } public boolean accept(ScreenFact screenFact) { return (screenFact instanceof LoginScreenFact); } public void setUserFieldName(String userFieldName) { this.userFieldName = userFieldName; } public void setPasswordFieldName(String passwordFieldName) { this.passwordFieldName = passwordFieldName; } public void setErrorFieldName(String errorFieldName) { this.errorFieldName = errorFieldName; } }