catch up with development

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N.properties b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N.properties
index 1fd132c..ff70c83 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N.properties
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N.properties
@@ -217,6 +217,8 @@
 
 user_menu_tooltip = user_menu_tooltip
 
+usergroup_tip = usergroup_tip
+
 users = users
 
 valid = valid
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de.properties b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de.properties
index d0774e2..8e70495 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de.properties
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_de.properties
@@ -217,6 +217,8 @@
 
 user_menu_tooltip = Aufklappmen\u00FC
 
+usergroup_tip = Benutzergruppe
+
 users = Benutzer
 
 valid = Daten sind g\u00FCltig
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en.properties b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en.properties
index ef9bfc8..3a2f508 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en.properties
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_en.properties
@@ -217,6 +217,8 @@
 
 user_menu_tooltip = Drop-down menu
 
+usergroup_tip = user group
+
 users = Users
 
 valid = Data valid
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_fr.properties b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_fr.properties
index 8bc5d95..d91fbf9 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_fr.properties
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/i18n/I18N_fr.properties
@@ -211,6 +211,8 @@
 
 user_menu_tooltip = Menu d\u00E9roulant
 
+usergroup_tip = Groupe d'Utilisateur
+
 users = Utilisateur
 
 valid = Les donn\u00E9es sont valides
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/maintoolbar/MainToolbarProvider.java b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/maintoolbar/MainToolbarProvider.java
index 08b413b..cb308cf 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/maintoolbar/MainToolbarProvider.java
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/maintoolbar/MainToolbarProvider.java
@@ -232,7 +232,7 @@
 			toolItem.setType(ItemType.PUSH);
 
 			toolItem.setTooltip(buttonModel.getName());
-			toolItem.setIconURI(themeResourceService.getThemeURI(buttonModel.getIconURI(), ThemeResourceType.ICON));
+			toolItem.setIconURI(themeResourceService.getThemeURI(buttonModel.getCommand().getIconURI(), ThemeResourceType.ICON));
 			toolItem.setEnabled(true);
 			toolItem.setToBeRendered(true);
 			toolItem.setVisible(true);
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/DialogProvider.java b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/DialogProvider.java
index f0ef321..ce41dc1 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/DialogProvider.java
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/perspective/DialogProvider.java
@@ -438,7 +438,6 @@
 				return;
 			}
 		}
-		
 		addSaveAndNewListener();
 
 		if(dialogModel.getGroup() != null) {
@@ -691,7 +690,7 @@
 			viewContext = ecviewComponent.setValue(viewId, null, renderingParams);
 			viewContext.setLocale(user.getLocale());
 			YView yView = (YView) viewContext.getViewEditpart().getModel();
-
+			
 			if (yView == null) {
 				Notification.show("Dialog could not be found!", Type.ERROR_MESSAGE);
 				return;
@@ -1124,8 +1123,8 @@
 	private void actionSave() {
 		DTO savedDto = (DTO) viewContext.getBean(IViewContext.MAIN_BEAN_SLOT);
 		if(validate(savedDto)) {
-			executeDialogFunction("pre save", preSaveMethod, savedDto);
-			dtoService.update(savedDto);
+			if( executeDialogFunction("pre save", preSaveMethod, savedDto) )
+				dtoService.update(savedDto);
 			DTO newDto = dtoService.reload(savedDto);
 			executeDialogFunction("post save", postSaveMethod, newDto);
 	    	updateBindings(newDto);
@@ -1137,8 +1136,8 @@
 	private void actionSaveAndNew() {
 		DTO savedDto = (DTO) viewContext.getBean(IViewContext.MAIN_BEAN_SLOT);
 		if(validate(savedDto)) {
-			executeDialogFunction("pre save", preSaveMethod, savedDto);
-			dtoService.update(savedDto);
+			if( executeDialogFunction("pre save", preSaveMethod, savedDto) )
+				dtoService.update(savedDto);
 			DTO newDto = dtoService.reload(savedDto);
 			executeDialogFunction("post save", postSaveMethod, newDto);
 			if(lastBaseDto != null) {
@@ -1153,8 +1152,8 @@
 	private void actionSaveAsNew() {
 		DTO newDto = (DTO) DtoUtils.copyDto(viewContext.getBean(IViewContext.MAIN_BEAN_SLOT));
 		if(validate(newDto)) {
-			executeDialogFunction("pre save", preSaveMethod, newDto);
-			dtoService.update(newDto);
+			if( executeDialogFunction("pre save", preSaveMethod, newDto) )
+				dtoService.update(newDto);
 			newDto = dtoService.reload(newDto);
 			executeDialogFunction("post save", postSaveMethod, newDto);
 			updateBindings(newDto);
diff --git a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/userfilter/UserFilterDialogProvider.java b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/userfilter/UserFilterDialogProvider.java
index 6761211..df7d7a2 100644
--- a/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/userfilter/UserFilterDialogProvider.java
+++ b/org.eclipse.osbp.vaaclipse.addons.softwarefactory/src/org/eclipse/osbp/vaaclipse/addons/softwarefactory/userfilter/UserFilterDialogProvider.java
@@ -17,6 +17,7 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
@@ -34,12 +35,12 @@
 import javax.persistence.criteria.Root;
 
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.osbp.authentication.account.dtos.UserAccountDto;
-import org.eclipse.osbp.authentication.account.dtos.UserAccountFilterDto;
-import org.eclipse.osbp.authentication.account.dtos.mapper.UserAccountDtoMapper;
-import org.eclipse.osbp.authentication.account.dtos.mapper.UserAccountFilterDtoMapper;
-import org.eclipse.osbp.authentication.account.entities.UserAccount;
-import org.eclipse.osbp.authentication.account.entities.UserAccountFilter;
+import org.eclipse.osbp.authentication.account.dtos.FilterDto;
+import org.eclipse.osbp.authentication.account.dtos.UserGroupDto;
+import org.eclipse.osbp.authentication.account.dtos.mapper.FilterDtoMapper;
+import org.eclipse.osbp.authentication.account.dtos.mapper.UserGroupDtoMapper;
+import org.eclipse.osbp.authentication.account.entities.Filter;
+import org.eclipse.osbp.authentication.account.entities.UserGroup;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
 import org.eclipse.osbp.dsl.common.datatypes.IDto;
 import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
@@ -53,7 +54,6 @@
 import org.eclipse.osbp.jpa.services.filters.LJoinFilter;
 import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
 import org.eclipse.osbp.runtime.common.filter.IDTOService;
-import org.eclipse.osbp.runtime.common.filter.ILFilter;
 import org.eclipse.osbp.runtime.common.types.IBundleSpace;
 import org.eclipse.osbp.runtime.web.vaadin.common.data.BeanServiceLazyLoadingContainer;
 import org.eclipse.osbp.runtime.web.vaadin.common.data.IAlreadyLoadedItemIdProvider;
@@ -105,7 +105,7 @@
 	IModelingContext modelingContext;
 
 	/** The user field. */
-	private ComboBox userField;
+	private ComboBox userGroupField;
 
 	/** The entity field. */
 	private EObjectComboBox entityField;
@@ -230,7 +230,7 @@
 			try {
 				@SuppressWarnings("unchecked")
 				Class<IDto> dtoClass = (Class<IDto>) bundleSpace.forName(fqnDto);
-				IDTOService<IDto> service = (IDTOService<IDto>) DtoServiceAccess
+				IDTOService<IDto> service = DtoServiceAccess
 						.getService(dtoClass);
 				StatefulDelegatingDtoSearchService<IDto> loadingService = new StatefulDelegatingDtoSearchService<>(
 						service, dtoClass);
@@ -259,7 +259,7 @@
 			// be preselected.
 			final Set<IDto> selectedFilters = new HashSet<>();
 			// Searching for candidates for preselection
-			for (UserAccountFilterDto accountFilterDto : getFilters()) {
+			for (FilterDto accountFilterDto : getFilters()) {
 				String filter = accountFilterDto.getFilter();
 				String filterId = getFilterId(filter);
 				String filterEntity = getFilterEntity(filter);
@@ -268,7 +268,7 @@
 				String entityDtoName = EntityUtils.getQualifiedDtoNameForQualifiedEntityName(filterEntity);
 				for (IDto dto : items) {
 					// Excluding not existing entities within the filters in
-					// UserAccountFilter
+					// Filter
 					if (dto.getClass().getName().equals(entityDtoName)) { // NOSONAR
 						// selection of the inverse check-box
 						boolean inversValue = accountFilterDto.getInvers();
@@ -278,10 +278,10 @@
 						// Identify the entity candidates comparing their ID
 						// with
 						// the persisted ID within the filter in
-						// UserAccountFilter
+						// Filter
 						Object idValue = DtoUtils.getIdValue(dto);
 						if (idValue instanceof Integer) {
-							if (new Integer(filterId).equals((Integer) idValue)) {
+							if (new Integer(filterId).equals(idValue)) {
 								selectedFilters.add(dto);
 							}
 						} else {
@@ -331,20 +331,20 @@
 		 *
 		 * @return the filters
 		 */
-		private Collection<UserAccountFilterDto> getFilters() {
+		private Collection<FilterDto> getFilters() {
 			// UserAccount
-			UserAccountDto userDto = (UserAccountDto) userField.getValue();
+			UserGroupDto userGroup = (UserGroupDto) userGroupField.getValue();
 			// create UserAccountDTOService
-			IDTOService<UserAccountFilterDto> service = (IDTOService<UserAccountFilterDto>) DtoServiceAccess
-					.getService(UserAccountFilterDto.class);
-			// find all useraccountfilter elements with the reference to the
-			// providing user account id.
-			ILFilter filter = null;
-			if (userDto != null) {
-				Equal idCompareFilter = new LCompare.Equal("id", userDto.getId());
-				filter = new LJoinFilter("userAccount", idCompareFilter);
+			IDTOService<FilterDto> service = DtoServiceAccess
+					.getService(FilterDto.class);
+			// find all filter elements with the reference to the
+			// providing usergroup id.
+			if (userGroup != null) {
+				Equal idCompareFilter = new LCompare.Equal("id", userGroup.getId());
+				LJoinFilter filter = new LJoinFilter("userGroup", idCompareFilter);
+				return service.find(new Query(filter));
 			}
-			return service.find(new Query(filter));
+			return Collections.emptyList();
 		}
 
 	}
@@ -476,13 +476,13 @@
 		 */
 		@Override
 		public void buttonClick(ClickEvent event) {
-			updateUserAccountFilterTable();
+			updateFilterTable();
 		}
 
 		/**
 		 * Update user account filter table.
 		 */
-		private void updateUserAccountFilterTable() {
+		private void updateFilterTable() {
 			EntityManager em = emf.createEntityManager();
 			em.getTransaction().begin();
 			criteriaDeleteAndUpdate(em);
@@ -497,31 +497,31 @@
 		 *            the entity manager factory
 		 */
 		private void criteriaDeleteAndUpdate(EntityManager em) {
-			UserAccountDto userDto = (UserAccountDto) userField.getValue();
+			UserGroupDto userGroupDto = (UserGroupDto) userGroupField.getValue();
 			CriteriaBuilder cb = em.getCriteriaBuilder();
 
 			// delete all existing entries as prerequisite for the following
 			// update
 			// of the user account
-			CriteriaDelete<UserAccountFilter> delete = cb.createCriteriaDelete(UserAccountFilter.class);
+			CriteriaDelete<Filter> delete = cb.createCriteriaDelete(Filter.class);
 			// set the root class
-			Root<UserAccountFilter> userAccountFilterRootDelete = delete.from(UserAccountFilter.class);
-			Join<UserAccountFilter, UserAccount> uaJoin = userAccountFilterRootDelete.join("userAccount",
+			Root<Filter> userGroupFilterRootDelete = delete.from(Filter.class);
+			Join<Filter, UserGroup> uaJoin = userGroupFilterRootDelete.join("userGroup",
 					JoinType.LEFT);
 			// set where clause
-			Predicate cbEqualId = cb.equal(uaJoin.get("id"), userDto.getId());
+			Predicate cbEqualId = cb.equal(uaJoin.get("id"), userGroupDto.getId());
 			String likeString = EntityUtils.getFQNForLEntity((LEntity) entityField.getValue()) + FILTER_DELIMITER + "%";
-			Predicate cbLikeEntity = cb.like(userAccountFilterRootDelete.get("filter"), likeString);
+			Predicate cbLikeEntity = cb.like(userGroupFilterRootDelete.get("filter"), likeString);
 			delete.where(cb.and(cbEqualId, cbLikeEntity));
 			// perform delete
 			em.createQuery(delete).executeUpdate();
 
 			// create an empty userAccount and set only the id.
-			UserAccountDtoMapper<UserAccountDto, UserAccount> userAccountMapper = new UserAccountDtoMapper<>();
-			UserAccount userAccount = userAccountMapper.createEntity();
-			userAccount.setId(userDto.getId());
+			UserGroupDtoMapper<UserGroupDto, UserGroup> userGroupMapper = new UserGroupDtoMapper<>();
+			UserGroup userGroup = userGroupMapper.createEntity();
+			userGroup.setId(userGroupDto.getId());
 
-			UserAccountFilterDtoMapper<UserAccountFilterDto, UserAccountFilter> userAccountFilterMapper = new UserAccountFilterDtoMapper<>();
+			FilterDtoMapper<FilterDto, Filter> userGroupFilterMapper = new FilterDtoMapper<>();
 
 			// creation of all the required data to insert
 			LEntity entityValue = ((LEntity) entityField.getValue());
@@ -538,13 +538,13 @@
 					Object idValue = DtoUtils.getValue(dto, entityValue.getPrimaryKeyAttribute().getName());
 					String filterValue = fqn + FILTER_DELIMITER + idValue;
 					// create userAccountFilter entity
-					UserAccountFilter userAccountFilter = userAccountFilterMapper.createEntity();
-					userAccountFilter.setId(java.util.UUID.randomUUID().toString());
-					userAccountFilter.setFilter(filterValue);
-					userAccountFilter.setInvers(filterCheckInvers.getValue());
-					userAccountFilter.setUserAccount(userAccount);
+					Filter userGroupFilter = userGroupFilterMapper.createEntity();
+					userGroupFilter.setId(java.util.UUID.randomUUID().toString());
+					userGroupFilter.setFilter(filterValue);
+					userGroupFilter.setInvers(filterCheckInvers.getValue());
+					userGroupFilter.setUserGroup(userGroup);
 					// persist the userAccountFilter entity
-					em.persist(userAccountFilter);
+					em.persist(userGroupFilter);
 				}
 				Notification.show("SAVED", "The " + keys.size() + " filter were successfully saved.",
 						Notification.Type.HUMANIZED_MESSAGE);
@@ -561,11 +561,7 @@
 	 */
 	@Override
 	public void valueChange(ValueChangeEvent event) {
-		if (userField.getValue() != null && entityField.getValue() != null && (filterField.getValue() != null)) {
-			save.setEnabled(true);
-		} else {
-			save.setEnabled(false);
-		}
+		save.setEnabled(userGroupField.getValue() != null && entityField.getValue() != null && (filterField.getValue() != null));
 	}
 
 	/*
@@ -615,11 +611,11 @@
 		dataArea.setMargin(true);
 		parent.addComponent(dataArea);
 
-		userField = new ComboBox();
-		userField.setItemCaptionPropertyId("userName");
-		userField.setImmediate(true);
-		userField.setSizeFull();
-		comboArea.addComponent(userField);
+		userGroupField = new ComboBox();
+		userGroupField.setItemCaptionPropertyId("userGroupName");
+		userGroupField.setImmediate(true);
+		userGroupField.setSizeFull();
+		comboArea.addComponent(userGroupField);
 
 		entityField = new EObjectComboBox(modelingContext.getAdapterFactory());
 		entityField.setImmediate(true);
@@ -672,8 +668,8 @@
 		fillItems();
 
 		// Listener
-		userField.addValueChangeListener(this);
-		userField.addValueChangeListener(new UserComboBoxValueChangeListener());
+		userGroupField.addValueChangeListener(this);
+		userGroupField.addValueChangeListener(new UserComboBoxValueChangeListener());
 		entityField.addValueChangeListener(this);
 		entityField.addValueChangeListener(new EntityComboBoxValueChangeListener());
 		filterField.addValueChangeListener(this);
@@ -697,8 +693,7 @@
 	 */
 	// ---------- Helper Methods ------------
 	private void fillUsersComboBox() {
-		IDTOService<UserAccountDto> service = (IDTOService<UserAccountDto>) DtoServiceAccess
-				.getService(UserAccountDto.class);
+		IDTOService<UserGroupDto> service = DtoServiceAccess.getService(UserGroupDto.class);
 
 		// getting all existing users.
 		// not using directly the UserAccountDtoService via find-Method due to
@@ -706,11 +701,11 @@
 		// therefore we use here the combination of
 		// StatefulDelegatingDtoSearchService and
 		// BeanServiceLazyLoadingContainer.
-		StatefulDelegatingDtoSearchService<UserAccountDto> loadingService = new StatefulDelegatingDtoSearchService<>(
-				service, UserAccountDto.class);
-		BeanServiceLazyLoadingContainer<UserAccountDto> datasource = new BeanServiceLazyLoadingContainer<>(
-				loadingService, UserAccountDto.class, null);
-		userField.setContainerDataSource(datasource);
+		StatefulDelegatingDtoSearchService<UserGroupDto> loadingService = new StatefulDelegatingDtoSearchService<>(
+				service, UserGroupDto.class);
+		BeanServiceLazyLoadingContainer<UserGroupDto> datasource = new BeanServiceLazyLoadingContainer<>(
+				loadingService, UserGroupDto.class, null);
+		userGroupField.setContainerDataSource(datasource);
 	}
 
 	/**
@@ -736,7 +731,7 @@
 	 */
 	@Override
 	public void localeChanged(Locale locale) {
-		userField.setDescription(dslMetadataService.translate(locale.toLanguageTag(), "username_tip"));
+		userGroupField.setDescription(dslMetadataService.translate(locale.toLanguageTag(), "usergroup_tip"));
 		entityField.setDescription(dslMetadataService.translate(locale.toLanguageTag(), "entity_tip"));
 		filterCheckInvers.setCaption(dslMetadataService.translate(locale.toLanguageTag(), "invers"));
 		filterCheckInvers.setDescription(dslMetadataService.translate(locale.toLanguageTag(), "invers_tip"));