package org.fluxtream.core.domain; import org.apache.commons.lang.StringUtils; import org.hibernate.annotations.Index; import javax.persistence.*; import java.util.Collections; import java.util.HashSet; import java.util.Set; import java.util.StringTokenizer; /** * User: candide * Date: 18/11/13 * Time: 07:55 */ @Entity(name = "GuestDetails") @NamedQueries({ @NamedQuery(name = "guestDetails.byUsernmae", query = "SELECT details from GuestDetails details WHERE details.guestId=?"), @NamedQuery(name = "guestDetails.byGuestId", query = "SELECT details from GuestDetails details WHERE details.guestId=?"), @NamedQuery(name = "guestDetails.delete.all", query = "DELETE from GuestDetails details WHERE details.guestId=?") }) public class GuestDetails extends AbstractEntity { @Index(name="guestId") public long guestId; public String phoneNumber; public String avatarImageURL; public enum CoachCategory { NONE, FREE, TEST_DRIVE, PRO } @Lob public String profilePresentation; public String countryCode; public Integer city_id; public String website; public String accessToken; public String refreshToken; public long expires; public GuestDetails(){} public GuestDetails(long guestId) { this.guestId = guestId; } public CoachCategory coachCategory = CoachCategory.NONE; private static final String TAG_DELIMITER = ","; @Lob public String parseInstallationsStorage; public transient Set<String> parseInstallations; public Set<String> getInstallations() { if (parseInstallations==null) parseInstallations = new HashSet<String>(); return Collections.unmodifiableSet(parseInstallations); } @PostLoad void loadInstallations() { if (parseInstallationsStorage == null || parseInstallationsStorage.equals("")) { return; } StringTokenizer st = new StringTokenizer(parseInstallationsStorage,", \t\n\r\f"); while (st.hasMoreTokens()) { String tag = st.nextToken().trim(); if (tag.length() > 0) { addInstallation(tag); } } } public void addInstallation(final String parseInstallationId) { if (parseInstallationId != null && parseInstallationId.length() > 0) { if (parseInstallations == null) { parseInstallations = new HashSet<String>(); } parseInstallations.add(parseInstallationId); } } @PrePersist @PreUpdate protected void persistInstallations() { if (parseInstallations == null) { return; } parseInstallationsStorage = StringUtils.join(parseInstallations,","); } }