/** * JBoss, Home of Professional Open Source * Copyright Red Hat, Inc., and individual contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.aerogear.unifiedpush.api; import org.codehaus.jackson.annotate.JsonIgnore; import org.jboss.aerogear.unifiedpush.api.validation.DeviceTokenCheck; import java.util.HashSet; import java.util.Set; /** * One installation of a push-enabled client, running on a device (Android/iOS) * or user-agent (SimplePush) */ @DeviceTokenCheck public class Installation extends BaseModel { private static final long serialVersionUID = 7177135979544758234L; private boolean enabled = true; private String deviceToken; private String deviceType; private String operatingSystem; private String osVersion; private String alias; private Set<Category> categories = new HashSet<>(); private String platform; @JsonIgnore private Variant variant; public boolean isEnabled() { return this.enabled; } /** * Flag if the actual client installation is enabled (default) or not. * Disabled installations are not receiving push notifications. * * Used by the admin UI to disable specific clients. * * @param enabled if <code>true</code> the Installation is marked as enabled, * setting it to <code>false</code> disables it. */ public void setEnabled(final boolean enabled) { this.enabled = enabled; } public String getDeviceToken() { return this.deviceToken; } /** * Identifies the device/user-agent within its PushNetwork. * * <ul> * <li> APNs: <code>deviceToken</code> * <li> GCM: <code>registrationId</code> * <li> SimplePush: <code>pushEndpoint</code> * </ul> * * @param deviceToken unique string to identify an Installation with its PushNetwork */ public void setDeviceToken(final String deviceToken) { this.deviceToken = deviceToken; } public String getDeviceType() { return this.deviceType; } /** * The device type of the device or the user agent. * * <ul> * <li> For SimplePush this will be <code>Web</code> * <li> For iOS that could be <code>iPod</code>, <code>iPad</code> or <code>iPhone</code> * <li> For Android that could be <code>Phone</code> or <code>Tablet</code> * </ul> * * @param deviceType the type of the registered device */ public void setDeviceType(final String deviceType) { this.deviceType = deviceType; } public String getOperatingSystem() { return this.operatingSystem; } /** * The (optional) name of the underlying Operating System. * * @param operatingSystem the name of the Operating System. */ public void setOperatingSystem(final String operatingSystem) { this.operatingSystem = operatingSystem; } public String getOsVersion() { return this.osVersion; } /** * The (optional) version of the used Operating System. * * @param osVersion the version string of the mobile OS. */ public void setOsVersion(final String osVersion) { this.osVersion = osVersion; } public String getAlias() { return this.alias; } /** * Application specific alias to identify users with the system. * E.g. email address or username * * @param alias string to map the Installation to an actual user. */ public void setAlias(final String alias) { this.alias = alias; } /** * Used to "tag" the clients. E.g. apply sport, news etc * * @param categories set of all categories the client is in */ public void setCategories(final Set<Category> categories) { this.categories = categories; } public Set<Category> getCategories() { return categories; } /** * A reliable way of determining the platform type * for an installation. FOR ADMIN UI ONLY - Helps with setting up Routes * * @param platform the name of the platform */ public void setPlatform(final String platform) { this.platform = platform; } public String getPlatform() { return platform; } public Variant getVariant() { return variant; } public void setVariant(Variant variant) { this.variant = variant; } }