/******************************************************************************* * Copyright (c) 2014 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.usage.event; /** * Represents a data which will be send to Google Analytics to track the user's event * @author Alexey Kazakov */ public class UsageEvent { private UsageEventType type; private String label; private Integer value; public UsageEvent(UsageEventType type) { this(type, null, null); } public UsageEvent(UsageEventType type, String label) { this(type, label, null); } public UsageEvent(UsageEventType type, String label, Integer value) { if(type == null) { throw new IllegalArgumentException("Type name may not be null"); //$NON-NLS-1$ } this.type = type; if(type.getLabelDescription()==null && label!=null) { throw new IllegalArgumentException("The label of this event may not be null since its event type has a label description"); //$NON-NLS-1$ } if(type.getValueDescription()==null && value!=null) { throw new IllegalArgumentException("The value of this event may not be null since its event type has a value description"); //$NON-NLS-1$ } this.label = label; this.value = value; } /** * @return the event type */ public UsageEventType getType() { return type; } /** * @return the event label name. May be null. */ public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } /** * @return the event value. May be null. */ public Integer getValue() { return value; } public void setValue(int value) { this.value = value; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{Type=").append(type.toString()).append(label!=null?("; Label=\"" + label) + "\"":"").append(value!=null?("; Value=\"" + value + "\""):"").append("}"); return sb.toString(); } /* (non-Javadoc) * @see java.lang.Object#clone() */ @Override public UsageEvent clone() { return new UsageEvent(this.type, this.label, this.value); } }