catch up with development

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
index b997580..affe08b 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -23,6 +23,7 @@
                 <jenkins.build.dependency>org.eclipse.osbp.preferences</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.vaaclipse.addons.common.api</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.i18n</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.oxtype</jenkins.build.dependency>
         </jenkins.build.dependencies>
diff --git a/org.eclipse.osbp.authentication/i18n/I18N.properties b/org.eclipse.osbp.authentication/i18n/I18N.properties
index 84c0fa5..94cd54d 100644
--- a/org.eclipse.osbp.authentication/i18n/I18N.properties
+++ b/org.eclipse.osbp.authentication/i18n/I18N.properties
@@ -1,60 +1,28 @@
 #default
 action=action
-activation_time=activation_time
-actual_owner=actual_owner
-administration=administration
-all_accounts=all_accounts
-answer_no_text=answer_no_text
-answer_yes_text=answer_yes_text
-cancel=cancel
-cancel_item=cancel_item
-clear_filter=clear_filter
 common=common
 cookie_hash_code=cookie_hash_code
-created_by=created_by
-created_on=created_on
+dash_board=dash_board
 default_perspective=default_perspective
-delete_item=delete_item
-description=description
-edit_account=edit_account
 email=email
 enabled=enabled
-end_date=end_date
-equal_to=equal_to
-expiration_time=expiration_time
 extra_password=extra_password
 failed_attempt=failed_attempt
+favorites=favorites
 filter=filter
-focusing_strategy=focusing_strategy
-foo=foo
+filters=filters
 force_pwd_change=force_pwd_change
-greater_than=greater_than
-groups=groups
 id=id
 invers=invers
-items_per_page=items_per_page
-layouting_strategy=layouting_strategy
-lesser_than=lesser_than
 locale_tag=locale_tag
 locked=locked
-menu=menu
-name=name
-new_item=new_item
 not_registered=not_registered
-ok=ok
 organization=organization
-page=page
 password=password
 password_reset=password_reset
 personal=personal
-perspective_na=perspective_na
 position=position
 print_service=print_service
-priority=priority
-process_id=process_id
-process_instance_id=process_instance_id
-process_session_id=process_session_id
-profile=profile
 profileimage=profileimage
 registered=registered
 reset=reset
@@ -69,21 +37,11 @@
 start_date=start_date
 start_process_text=start_process_text
 statistics=statistics
-status=status
-subject=subject
 successful_attempt=successful_attempt
 superuser=superuser
-supervisor=supervisor
-task_id=task_id
 theme=theme
-toolbar_for_dialogs=toolbar_for_dialogs
 user_account=user_account
-user_account_filter=user_account_filter
-user_administration=user_administration
-user_bean=user_bean
-user_filter=user_filter
 user_group=user_group
 user_group_filter=user_group_filter
 user_group_name=user_group_name
 user_name=user_name
-users=users
diff --git a/org.eclipse.osbp.authentication/i18n/I18N_de.properties b/org.eclipse.osbp.authentication/i18n/I18N_de.properties
index 816cd98..af6fdef 100644
--- a/org.eclipse.osbp.authentication/i18n/I18N_de.properties
+++ b/org.eclipse.osbp.authentication/i18n/I18N_de.properties
@@ -1,79 +1 @@
 #de
-action=Aktion
-administration=Verwaltung
-all_accounts=Alle Konten
-answer_no_text=Nein
-answer_yes_text=Ja
-cancel=Abbruch
-cancel_item=\u00C4nderungen verwerfen
-clear_filter=Filter l\u00F6schen
-common=Allgemein
-cookie_hash_code=Cookie hash code
-created_by=Erzeugt durch
-created_on=Erzeugt am
-default_perspective=Standard Perspektive
-delete_item=Datensatz l\u00F6schen
-description=Beschreibung
-edit_account=Konto bearbeiten
-email=Email
-enabled=Aktiviert
-end_date=Endedatum
-equal_to=ist gleich
-expiration_time=Ablaufdatum
-extra_password=Extra Passwort
-failed_attempt=Fehlerhafte Anmeldungen
-filter=Filter
-force_pwd_change=Erzwinge Passwort\u00E4nderung
-greater_than=Gr\u00F6\u00DFer als
-groups=Gruppen
-id=ID
-invers=Invertiert
-items_per_page=Elemente pro Seite
-lesser_than=Kleiner als
-locale_tag=Spracheinstellung
-locked=Gesperrt
-menu=Men\u00FC
-name=Name
-new_item=Neu
-not_registered=Nicht registriert
-ok=OK
-page=Seite
-password=Passwort
-password_reset=Passwort zur\u00FCcksetzen
-personal=Pers\u00F6nlich
-perspective_na=Perspektive
-position=Stelle
-print_service=Drucker
-priority=Priorit\u00E4t
-process_id=Proze\u00DF ID
-profile=Profil
-profileimage=Foto
-registered=Registriert
-reset=Zur\u00FCcksetzen
-save=Speichern
-save_item=Speichern
-saved_properties=Gespeicherte Eigenschaften
-security_message=Sicherheitsnachricht
-set_filter=Filter speichern
-setting=Einstellung
-settings=Einstellungen
-show_all=Alles anzeigen
-start_date=Anfangsdatum
-start_process_text=Starte Proze\u00DF
-statistics=Statistiken
-status=Status
-subject=Thema
-successful_attempt=Erfolgreiche Anmeldungen
-superuser=Administrator
-supervisor=Supervisor
-task_id=Task identifier
-theme=Theme
-toolbar_for_dialogs=Toolbar f\u00FCr Dialoge
-user_account=Benutzerkonto
-user_account_filter=Filter f\u00FCr Benutzerkonto
-user_administration=Benutzerverwaltung
-user_group=Benutzergruppe
-user_group_filter=Filter f\u00FCr Gruppe
-user_group_name=Gruppenbezeichnung
-user_name=Benutzername
-users=Benutzer
diff --git a/org.eclipse.osbp.authentication/i18n/I18N_de_AT.properties b/org.eclipse.osbp.authentication/i18n/I18N_de_AT.properties
deleted file mode 100644
index 3f64431..0000000
--- a/org.eclipse.osbp.authentication/i18n/I18N_de_AT.properties
+++ /dev/null
@@ -1 +0,0 @@
-#Generated by Eclipse Messages Editor (Eclipse Babel)
diff --git a/org.eclipse.osbp.authentication/i18n/I18N_en.properties b/org.eclipse.osbp.authentication/i18n/I18N_en.properties
index 3f26d43..9edcd71 100644
--- a/org.eclipse.osbp.authentication/i18n/I18N_en.properties
+++ b/org.eclipse.osbp.authentication/i18n/I18N_en.properties
@@ -1,33 +1,19 @@
 #en
 action=Action
-activation_time=Activation time
-actual_owner=Actual owner
-administration=Administration
-all_accounts=All accounts
-answer_no_text=No
-answer_yes_text=Yes
-cancel=Cancel
-cancel_item=Cancel item
-clear_filter=Clear filter
 common=Common
 cookie_hash_code=Cookie hash code
-created_by=Created by
-created_on=Created on
+dash_board=Dash board
 default_perspective=Default perspective
-delete_item=Delete item
-description=Description
-edit_account=Edit account
 email=Email
 enabled=Enabled
-end_date=End date
-equal_to=Equal to
-expiration_time=Expiration time
 extra_password=Extra password
 failed_attempt=Failed attempt
+favorites=Favorites
 filter=Filter
+filters=Filters
 focusing_strategy=Focusing strategy
 foo=Foo
-force_pwd_change=Force password change
+force_pwd_change=Force pwd change
 greater_than=Greater than
 groups=Groups
 id=Identifier
@@ -39,7 +25,7 @@
 locked=Locked
 menu=Menu
 name=Name
-new_item=New
+new_item=New item
 not_registered=Not registered
 ok=Ok
 organization=Organization
@@ -47,7 +33,7 @@
 password=Password
 password_reset=Password reset
 personal=Personal
-perspective_na=Perspective
+perspective_na=Perspective na
 position=Position
 print_service=Print service
 priority=Priority
@@ -59,7 +45,7 @@
 registered=Registered
 reset=Reset
 save=Save
-save_item=Save
+save_item=Save item
 saved_properties=Saved properties
 security_message=Security message
 set_filter=Set filter
@@ -67,7 +53,7 @@
 settings=Settings
 show_all=Show all
 start_date=Start date
-start_process_text=Start process
+start_process_text=Start process text
 statistics=Statistics
 status=Status
 subject=Subject
@@ -83,7 +69,8 @@
 user_bean=User bean
 user_filter=User filter
 user_group=User group
-user_group_filter=Filter for user group 
+user_group_filter=User group filter
 user_group_name=User group name
 user_name=User name
 users=Users
+x=X
diff --git a/org.eclipse.osbp.authentication/i18n/I18N_en_US.properties b/org.eclipse.osbp.authentication/i18n/I18N_en_US.properties
deleted file mode 100644
index 3f64431..0000000
--- a/org.eclipse.osbp.authentication/i18n/I18N_en_US.properties
+++ /dev/null
@@ -1 +0,0 @@
-#Generated by Eclipse Messages Editor (Eclipse Babel)
diff --git a/org.eclipse.osbp.authentication/i18n/I18N_fr.properties b/org.eclipse.osbp.authentication/i18n/I18N_fr.properties
index 73dcbaf..ea7c0a8 100644
--- a/org.eclipse.osbp.authentication/i18n/I18N_fr.properties
+++ b/org.eclipse.osbp.authentication/i18n/I18N_fr.properties
@@ -1,17 +1,3 @@
 #fr
-answer_no_text=Non
-answer_yes_text=Oui
-cancel=Abort
-cancel_item=Abort
-cookie_hash_code=Cookie hash code
-email=E-mail
-failed_attempt=Connexions refus\u00E9es
-id=ID
-locale_tag=Localisation
-name=nom
-profileimage=Photo
-status=Statu
-successful_attempt=Connexions r\u00E9ussies
 superuser=Super-utilisateur
-supervisor=Supervisor
 theme=Theme
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountDto.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountDto.java
index be8708a..3cb97d3 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountDto.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/UserAccountDto.java
@@ -111,6 +111,18 @@
   @Valid
   private byte[] savedProperties;
   
+  @Hidden
+  @Valid
+  private byte[] dashBoard;
+  
+  @Hidden
+  @Valid
+  private byte[] favorites;
+  
+  @Hidden
+  @Valid
+  private byte[] filters;
+  
   public UserAccountDto() {
     installLazyCollections();
   }
@@ -626,6 +638,60 @@
     firePropertyChange("savedProperties", this.savedProperties, this.savedProperties = savedProperties );
   }
   
+  /**
+   * Returns the dashBoard property or <code>null</code> if not present.
+   */
+  public byte[] getDashBoard() {
+    return this.dashBoard;
+  }
+  
+  /**
+   * Sets the <code>dashBoard</code> property to this instance.
+   * 
+   * @param dashBoard - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setDashBoard(final byte[] dashBoard) {
+    firePropertyChange("dashBoard", this.dashBoard, this.dashBoard = dashBoard );
+  }
+  
+  /**
+   * Returns the favorites property or <code>null</code> if not present.
+   */
+  public byte[] getFavorites() {
+    return this.favorites;
+  }
+  
+  /**
+   * Sets the <code>favorites</code> property to this instance.
+   * 
+   * @param favorites - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setFavorites(final byte[] favorites) {
+    firePropertyChange("favorites", this.favorites, this.favorites = favorites );
+  }
+  
+  /**
+   * Returns the filters property or <code>null</code> if not present.
+   */
+  public byte[] getFilters() {
+    return this.filters;
+  }
+  
+  /**
+   * Sets the <code>filters</code> property to this instance.
+   * 
+   * @param filters - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setFilters(final byte[] filters) {
+    firePropertyChange("filters", this.filters, this.filters = filters );
+  }
+  
   public boolean equalVersions(final Object obj) {
     if (this == obj)
       return true;
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountDtoMapper.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountDtoMapper.java
index 6ed03dd..f422d47 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountDtoMapper.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/dtos/mapper/UserAccountDtoMapper.java
@@ -108,6 +108,9 @@
     dto.setTheme(toDto_theme(entity, context));
     dto.setPrintService(toDto_printService(entity, context));
     dto.setSavedProperties(toDto_savedProperties(entity, context));
+    dto.setDashBoard(toDto_dashBoard(entity, context));
+    dto.setFavorites(toDto_favorites(entity, context));
+    dto.setFilters(toDto_filters(entity, context));
   }
   
   /**
@@ -148,6 +151,9 @@
     entity.setTheme(toEntity_theme(dto, entity, context));
     entity.setPrintService(toEntity_printService(dto, entity, context));
     entity.setSavedProperties(toEntity_savedProperties(dto, entity, context));
+    entity.setDashBoard(toEntity_dashBoard(dto, entity, context));
+    entity.setFavorites(toEntity_favorites(dto, entity, context));
+    entity.setFilters(toEntity_filters(dto, entity, context));
   }
   
   /**
@@ -747,6 +753,81 @@
     return in.getSavedProperties();
   }
   
+  /**
+   * Maps the property dashBoard from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected byte[] toDto_dashBoard(final UserAccount in, final MappingContext context) {
+    return in.getDashBoard();
+  }
+  
+  /**
+   * Maps the property dashBoard from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected byte[] toEntity_dashBoard(final UserAccountDto in, final UserAccount parentEntity, final MappingContext context) {
+    return in.getDashBoard();
+  }
+  
+  /**
+   * Maps the property favorites from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected byte[] toDto_favorites(final UserAccount in, final MappingContext context) {
+    return in.getFavorites();
+  }
+  
+  /**
+   * Maps the property favorites from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected byte[] toEntity_favorites(final UserAccountDto in, final UserAccount parentEntity, final MappingContext context) {
+    return in.getFavorites();
+  }
+  
+  /**
+   * Maps the property filters from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected byte[] toDto_filters(final UserAccount in, final MappingContext context) {
+    return in.getFilters();
+  }
+  
+  /**
+   * Maps the property filters from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected byte[] toEntity_filters(final UserAccountDto in, final UserAccount parentEntity, final MappingContext context) {
+    return in.getFilters();
+  }
+  
   public String createDtoHash(final Object in) {
     return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(UserAccountDto.class, in);
   }
diff --git a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccount.java b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccount.java
index c19823c..a5618ea 100644
--- a/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccount.java
+++ b/org.eclipse.osbp.authentication/src-gen/org/eclipse/osbp/authentication/account/entities/UserAccount.java
@@ -141,6 +141,27 @@
   @Valid
   private byte[] savedProperties;
   
+  @Hidden
+  @Column(name = "DASH_BOARD")
+  @Lob
+  @Basic(fetch = FetchType.LAZY)
+  @Valid
+  private byte[] dashBoard;
+  
+  @Hidden
+  @Column(name = "FAVORITES")
+  @Lob
+  @Basic(fetch = FetchType.LAZY)
+  @Valid
+  private byte[] favorites;
+  
+  @Hidden
+  @Column(name = "FILTERS")
+  @Lob
+  @Basic(fetch = FetchType.LAZY)
+  @Valid
+  private byte[] filters;
+  
   /**
    * @return true, if the object is disposed. 
    * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
@@ -546,6 +567,54 @@
     this.savedProperties = savedProperties;
   }
   
+  /**
+   * @return Returns the dashBoard property or <code>null</code> if not present.
+   */
+  public byte[] getDashBoard() {
+    checkDisposed();
+    return this.dashBoard;
+  }
+  
+  /**
+   * Sets the dashBoard property to this instance.
+   */
+  public void setDashBoard(final byte[] dashBoard) {
+    checkDisposed();
+    this.dashBoard = dashBoard;
+  }
+  
+  /**
+   * @return Returns the favorites property or <code>null</code> if not present.
+   */
+  public byte[] getFavorites() {
+    checkDisposed();
+    return this.favorites;
+  }
+  
+  /**
+   * Sets the favorites property to this instance.
+   */
+  public void setFavorites(final byte[] favorites) {
+    checkDisposed();
+    this.favorites = favorites;
+  }
+  
+  /**
+   * @return Returns the filters property or <code>null</code> if not present.
+   */
+  public byte[] getFilters() {
+    checkDisposed();
+    return this.filters;
+  }
+  
+  /**
+   * Sets the filters property to this instance.
+   */
+  public void setFilters(final byte[] filters) {
+    checkDisposed();
+    this.filters = filters;
+  }
+  
   @PreUpdate
   public void preUpdate() {
     if ((this.locked && (!this.enabled))) {
diff --git a/org.eclipse.osbp.authentication/src/account.dto b/org.eclipse.osbp.authentication/src/account.dto
index 2652a45..5ff2fa4 100644
--- a/org.eclipse.osbp.authentication/src/account.dto
+++ b/org.eclipse.osbp.authentication/src/account.dto
@@ -1,8 +1,7 @@
 
 import ns org.eclipse.osbp.authentication.account.entities.UserAccount
 import ns org.eclipse.osbp.authentication.account.entities.Filter
-import ns org.eclipse.osbp.authentication.account.entities.UserGroup
-package org.eclipse.osbp.authentication.account.dtos {
+import ns org.eclipse.osbp.authentication.account.entities.UserGroup package org.eclipse.osbp.authentication.account.dtos {
 
 	autoDto UserAccountDto wraps UserAccount {
 
@@ -21,14 +20,16 @@
 		inheritVar superuser
 		inheritVar forcePwdChange
 		inheritVar failedAttempt
-		inheritVar
-		successfulAttempt
+		inheritVar successfulAttempt
 		inheritVar cookieHashCode
 		inheritVar localeTag
 		inheritVar profileimage
 		inheritVar theme
 		inheritVar printService
 		inheritVar savedProperties
+		inheritVar dashBoard
+		inheritVar favorites
+		inheritVar filters
 	}
 
 	autoDto FilterDto wraps Filter {
diff --git a/org.eclipse.osbp.authentication/src/account.entity b/org.eclipse.osbp.authentication/src/account.entity
index efa915d..9ac1bfb 100644
--- a/org.eclipse.osbp.authentication/src/account.entity
+++ b/org.eclipse.osbp.authentication/src/account.entity
@@ -48,6 +48,9 @@
 		var String theme group setting properties(key = "theme" value = "")
 		var String printService group setting properties(key = "printservice" value = "")
 		var hidden blobtype savedProperties
+		var hidden blobtype dashBoard
+		var hidden blobtype favorites
+		var hidden blobtype filters
 		@PreUpdate 
 		def void preUpdate() {
 			if ( locked && ! enabled )
diff --git a/org.eclipse.osbp.authentication/src/account.service b/org.eclipse.osbp.authentication/src/account.service
index cd54d96..5dfbead 100644
--- a/org.eclipse.osbp.authentication/src/account.service
+++ b/org.eclipse.osbp.authentication/src/account.service
@@ -1,7 +1,8 @@
 
 import ns org.eclipse.osbp.authentication.account.dtos.UserAccountDto
 import ns org.eclipse.osbp.authentication.account.dtos.FilterDto
-import ns org.eclipse.osbp.authentication.account.dtos.UserGroupDto package org.eclipse.osbp.authentication.account.dtos.service {
+import ns org.eclipse.osbp.authentication.account.dtos.UserGroupDto
+package org.eclipse.osbp.authentication.account.dtos.service {
 
 	dtoservice UserAccountDtoService provides UserAccountDto {
 		mutable persistenceUnit authentication
diff --git a/org.eclipse.osbp.authentication/src/org/eclipse/osbp/authentication/providerimpl/UserAccessService.java b/org.eclipse.osbp.authentication/src/org/eclipse/osbp/authentication/providerimpl/UserAccessService.java
index f6a4b60..5ed7205 100644
--- a/org.eclipse.osbp.authentication/src/org/eclipse/osbp/authentication/providerimpl/UserAccessService.java
+++ b/org.eclipse.osbp.authentication/src/org/eclipse/osbp/authentication/providerimpl/UserAccessService.java
@@ -277,6 +277,7 @@
 			}
 			return true;
 		} catch (AuthenticationException ae) { // NOSONAR
+			LOGGER.error("{}", "Authentication: " + ae.getLocalizedMessage());
 			// captcha
 			int cnt = trackFailedLoginAttempt(username);
 			if (cnt > ProductConfiguration.getMaxLoginAttempts()) {
@@ -285,17 +286,16 @@
 			try {
 				// NOSONAR
 				// wait exponentially along failed logins up to a maximum of
-				// 18,2 hours to prevent "Rapid-Fire Login Attempts"
+				// 128 seconds to prevent "Rapid-Fire Login Attempts"
 				// http://stackoverflow.com/questions/549/the-definitive-guide-to-form-based-website-authentication
 
-				Long sleepLong = (long) (1000.0 * Math.max(5, Math.pow(2, Math.min(cnt, 16))));
+				Long sleepLong = (long) (1000.0 * Math.min(128, Math.max(5, Math.pow(2, Math.min(cnt, 16)))));
 				Long sleepLongSecs = sleepLong / 1000;
-				LOGGER.info("User '{}' is locked for {} seconds now ... pls. wait", username, sleepLongSecs.toString());
+				LOGGER.info("User '{}' is locked for {} seconds now ... pls. wait", username, sleepLongSecs);
 				Thread.sleep(sleepLong);
 			} catch (InterruptedException e) { // NOSONAR
 				// Empty by design
 			}
-			LOGGER.error("{}", "Authentication: " + ae.getLocalizedMessage());
 		}
 		return false;
 	}
@@ -1038,4 +1038,115 @@
 		}
 		return null;
 	}
+
+
+	@Override
+	public String getDashboard() {
+		UserAccountDto user = getUser();
+		if (user != null) {
+			ObjectInputStream objIn;
+			byte[] byteArray = user.getDashBoard();
+			if (byteArray != null){
+				try {
+					objIn = new ObjectInputStream(new ByteArrayInputStream(byteArray));
+					return (String) objIn.readObject();
+				} catch (IOException | ClassNotFoundException e) {
+					LOGGER.error(e.getClass().getName(), e);
+				}
+			}
+		}
+		return null;
+	}
+
+
+	@Override
+	public void setDashboard(String dashboard) {
+		UserAccountDto user = getDtoUserAccountDtoService().get(getUser().getId());
+		if (user != null) {
+			try {
+	        ByteArrayOutputStream out = new ByteArrayOutputStream();
+	        ObjectOutputStream objOut = new ObjectOutputStream(out);
+				objOut.writeObject(dashboard);
+				objOut.close();
+				user.setDashBoard(out.toByteArray());
+				UserProtocol.getDtoUserAccountDtoService().update(user);
+			} catch (IOException e) {
+				LOGGER.error(e.getClass().getName(), e);
+			}
+		}
+	}
+
+
+	@Override
+	public String getFavorites() {
+		UserAccountDto user = getUser();
+		if (user != null) {
+			ObjectInputStream objIn;
+			byte[] byteArray = user.getFavorites();
+			if (byteArray != null){
+				try {
+					objIn = new ObjectInputStream(new ByteArrayInputStream(byteArray));
+					return (String) objIn.readObject();
+				} catch (IOException | ClassNotFoundException e) {
+					LOGGER.error(e.getClass().getName(), e);
+				}
+			}
+		}
+		return null;
+	}
+
+
+	@Override
+	public void setFavorites(String favorites) {
+		UserAccountDto user = getDtoUserAccountDtoService().get(getUser().getId());
+		if (user != null) {
+			try {
+	        ByteArrayOutputStream out = new ByteArrayOutputStream();
+	        ObjectOutputStream objOut = new ObjectOutputStream(out);
+				objOut.writeObject(favorites);
+				objOut.close();
+				user.setFavorites(out.toByteArray());
+				UserProtocol.getDtoUserAccountDtoService().update(user);
+			} catch (IOException e) {
+				LOGGER.error(e.getClass().getName(), e);
+			}
+		}
+	}
+
+
+	@Override
+	public String getFilterSelections() {
+		UserAccountDto user = getUser();
+		if (user != null) {
+			ObjectInputStream objIn;
+			byte[] byteArray = user.getFilters();
+			if (byteArray != null){
+				try {
+					objIn = new ObjectInputStream(new ByteArrayInputStream(byteArray));
+					return (String) objIn.readObject();
+				} catch (IOException | ClassNotFoundException e) {
+					LOGGER.error(e.getClass().getName(), e);
+				}
+			}
+		}
+		return null;
+	}
+
+
+	@Override
+	public void setFilterSelections(String filters) {
+		UserAccountDto user = getDtoUserAccountDtoService().get(getUser().getId());
+		if (user != null) {
+			try {
+	        ByteArrayOutputStream out = new ByteArrayOutputStream();
+	        ObjectOutputStream objOut = new ObjectOutputStream(out);
+				objOut.writeObject(filters);
+				objOut.close();
+				user.setFilters(out.toByteArray());
+				UserProtocol.getDtoUserAccountDtoService().update(user);
+			} catch (IOException e) {
+				LOGGER.error(e.getClass().getName(), e);
+			}
+		}
+	}
 }
diff --git a/org.eclipse.osbp.user/META-INF/MANIFEST.MF b/org.eclipse.osbp.user/META-INF/MANIFEST.MF
index 583ab2f..50570ca 100644
--- a/org.eclipse.osbp.user/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.user/META-INF/MANIFEST.MF
@@ -9,17 +9,16 @@
  org.eclipse.e4.core.di.extensions,
  com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
  org.eclipse.osgi.services;bundle-version="3.4.0",
- org.eclipse.e4.ui.model.workbench,
+ org.eclipse.osbp.vaaclipse.addons.common.api,
  org.eclipse.e4.core.contexts;bundle-version="1.3.100",
  org.eclipse.e4.core.services,
- javax.servlet;bundle-version="3.1.0"
+ javax.servlet;bundle-version="3.1.0",
+ org.eclipse.osbp.ui.api,
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.e4.ui.model.workbench
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.annotation,
- org.eclipse.osbp.ui.api.customfields;version="0.9.0",
- org.eclipse.osbp.ui.api.user;version="0.9.0",
- org.eclipse.osbp.ui.api.user.filter;version="0.9.0",
- org.eclipse.osbp.ui.api.useraccess;version="0.9.0",
  org.slf4j
 Export-Package: org.eclipse.osbp.user;version="0.9.0"
 Service-Component: OSGI-INF/*.xml
diff --git a/org.eclipse.osbp.user/src/org/eclipse/osbp/user/User.java b/org.eclipse.osbp.user/src/org/eclipse/osbp/user/User.java
index 14a4a6a..8d4ea47 100644
--- a/org.eclipse.osbp.user/src/org/eclipse/osbp/user/User.java
+++ b/org.eclipse.osbp.user/src/org/eclipse/osbp/user/User.java
@@ -14,6 +14,13 @@
  */
 package org.eclipse.osbp.user;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Hashtable;
@@ -21,6 +28,18 @@
 import java.util.Locale;
 import java.util.Map;
 
+import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
 import org.eclipse.e4.core.di.extensions.EventUtils;
 import org.eclipse.e4.core.services.translation.TranslationService;
 import org.eclipse.e4.ui.model.application.MApplication;
@@ -29,6 +48,9 @@
 import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
 
 import com.vaadin.server.VaadinSession;
 
@@ -37,7 +59,7 @@
  * data. User can be injected. It conforms the vaaclipse AuthenticationProvider
  * mechanism.
  */
-public class User extends Hashtable<String, Object> implements IUser {
+public class User extends Hashtable<String, Object> implements IUser {	// NOSONAR
 
 	/** The application. */
 	private transient MApplication application;
@@ -59,8 +81,8 @@
 	/** The extra password. */
 	private String extraPassword;
 
-	/** The supervisor. */
-	private boolean supervisor;
+	/** The superuser. */
+	private boolean superuser;
 
 	/** The email. */
 	private String email;
@@ -96,7 +118,13 @@
 	private transient IColumnUtil columnUtil;
 	
 	private transient FilterMap userFilter;
-	
+	private transient DocumentBuilderFactory dbf;
+	private transient DocumentBuilder docBuilder;
+	private transient Document filterDocument;
+	private transient TransformerFactory transformerFactory;
+	private transient Transformer transformer;
+	private String filterFilePath;
+	private boolean saveSettingsAsFile = false;
 	/**
 	 * Instantiates a new user.
 	 *
@@ -115,6 +143,7 @@
 			position = UserBinder.getUserAccessService().getPositionName();
 			perspective = UserBinder.getUserAccessService().getPerspective();
 			extraPassword = UserBinder.getUserAccessService().getExtraPassword();
+			superuser = UserBinder.getUserAccessService().isSuperuser();
 			email = UserBinder.getUserAccessService().getEmail();
 			roles = UserBinder.getUserAccessService().getRoles();
 			id = UserBinder.getUserAccessService().getId();
@@ -136,6 +165,29 @@
 		put(userClass, IUser.class);
     	VaadinSession session = VaadinSession.getCurrent();
     	session.setAttribute(IUser.class, this);
+    	transformerFactory = TransformerFactory.newInstance();
+    	try {
+    		transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
+			transformer = transformerFactory.newTransformer();
+		} catch (TransformerConfigurationException e) {
+			LOGGER.error("transformer cannot be created {}", e);
+		}
+    	transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+    	transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
+    	transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+    	dbf = DocumentBuilderFactory.newInstance();	//NOSONAR
+        dbf.setNamespaceAware(true);
+        try {
+			docBuilder = dbf.newDocumentBuilder();
+		} catch (ParserConfigurationException e) {
+			LOGGER.error("document builder cannot be created {}", e);
+		}
+		String sep = System.getProperty("file.separator");
+		String path = String.format("%s%s.osbee", System.getProperty("user.home"), sep);
+		new File(path).mkdirs();
+		filterFilePath = String.format("%s%sUser.filter", path, sep);
+
+		loadFilterDocument();
 		LOGGER.debug("User is initialized");
 	}
 
@@ -228,13 +280,13 @@
 	}
 
 	/**
-	 * Gets the supervisor.
+	 * Gets the superuser.
 	 *
-	 * @return the supervisor
+	 * @return the superuser
 	 */
 	@Override
-	public boolean isSupervisor() {
-		return supervisor;
+	public boolean isSuperuser() {
+		return superuser;
 	}
 
 	/**
@@ -374,9 +426,7 @@
 		properties.clear();
 		dirtyPropertiesMap = false;
 	}
-	
-	
-	
+
 	/*
 	 * Inner class as wrapper to the properties
 	 */
@@ -410,8 +460,6 @@
 		}
 	}
 
-
-
 	@Override
 	public IColumnUtil getColumnUtil() {
 		return columnUtil;
@@ -421,4 +469,87 @@
 	public FilterMap getUserFilter() {
 		return userFilter;
 	}
+	
+	@Override
+	public synchronized Document getFilterDocument() {
+		if(filterDocument == null) {
+			filterDocument = docBuilder.newDocument();
+			filterDocument.appendChild(filterDocument.createElement(IUser.docRoot));
+		}
+		return filterDocument;
+	}
+	
+	@Override
+	public synchronized void loadFilterDocument() {
+		if(saveSettingsAsFile ) {
+			try(FileInputStream filterFile = new FileInputStream(filterFilePath)) {
+				filterDocument = docBuilder.parse(filterFile);
+				filterDocument.getDocumentElement().normalize();
+			} catch (IOException | SAXException e) {
+				LOGGER.error("{}", e);
+			}
+		} else {
+			String filters = UserBinder.getUserAccessService().getFilterSelections();
+			if(filters != null) {
+				try {
+					InputSource is = new InputSource(new StringReader(filters));
+					filterDocument = docBuilder.parse(is);
+					filterDocument.getDocumentElement().normalize();
+				} catch (IOException | SAXException e) {
+					LOGGER.error("{}", e);
+				}
+			}
+		}
+	}
+
+	@Override
+	public synchronized void saveFilterDocument() {
+		if(saveSettingsAsFile) {
+			try(FileOutputStream filterFile = new FileOutputStream(filterFilePath)) {
+				if(filterDocument != null) {
+					DOMSource source = new DOMSource(filterDocument);
+					FileWriter writer = new FileWriter(new File(filterFilePath));
+					StreamResult result = new StreamResult(writer);
+					transformer.transform(source, result);
+					writer.flush();
+				}
+			} catch (IOException | TransformerException e) {
+				LOGGER.error("{}", e);
+			}
+		} else {
+			try {
+				if(filterDocument != null) {
+					DOMSource source = new DOMSource(filterDocument);
+					StringWriter writer = new StringWriter();
+					StreamResult result = new StreamResult(writer);
+					transformer.transform(source, result);
+					writer.flush();
+					String filters = writer.getBuffer().toString();
+					getUserAccessService().setFilterSelections(filters);
+				}
+			} catch (TransformerException e) {
+				LOGGER.error("{}", e);
+			}
+		}
+	}
+	
+	@Override
+	public String loadDashboard() {
+		return UserBinder.getUserAccessService().getDashboard();
+	}
+
+	@Override
+	public void saveDashboard(String dashboard) {
+		UserBinder.getUserAccessService().setDashboard(dashboard);	
+	}
+
+	@Override
+	public String loadFavorites() {
+		return UserBinder.getUserAccessService().getFavorites();
+	}
+	
+	@Override
+	public void saveFavorites(String favorites) {
+		UserBinder.getUserAccessService().setFavorites(favorites);
+	}
 }