blob: a000307e1779df5ecedb0fa2fa5ed86c90b6d7fa [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 - 2005 University Of British Columbia and others.
* All rights reserved. This program and the accompanying materials
* are 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:
* University Of British Columbia - initial API and implementation
*******************************************************************************/
/*
* Created on May 18, 2005
*/
package org.eclipse.mylar.core;
import java.io.Serializable;
import java.util.*;
/**
* Immutable
*
* TODO: make custom serialized form
*
* @author Mik Kersten
*/
public class InteractionEvent implements Serializable {
private static final long serialVersionUID = 3L;
public enum Kind {
SELECTION,
EDIT,
COMMAND,
PREFERENCE,
PREDICTION,
PROPAGATION,
MANIPULATION;
/**
* TODO: add PREFERENCE?
*/
public boolean isUserEvent() {
return this == SELECTION || this == EDIT || this == COMMAND || this == PREFERENCE;
}
@Override
public String toString() {
switch(this) {
case SELECTION: return "selection";
case EDIT: return "edit";
case COMMAND: return "command";
case PREFERENCE: return "preference";
case PREDICTION: return "prediction";
case PROPAGATION: return "propagation";
case MANIPULATION: return "manipulation";
default: return "null";
}
}
public static Kind fromString(String string) {
if (string == null) return null;
if (string.equals("selection")) return SELECTION;
if (string.equals("edit")) return EDIT;
if (string.equals("command")) return COMMAND;
if (string.equals("preference")) return PREFERENCE;
if (string.equals("prediction")) return PREDICTION;
if (string.equals("propagation")) return PROPAGATION;
if (string.equals("manipulation")) return MANIPULATION;
return null;
}
}
private final Kind kind;
private final Date date;
private final Date endDate;
private final String originId;
private final String structureKind;
private final String structureHandle;
private final String navigation;
private final String delta;
private float interestContribution;
public InteractionEvent(Kind kind, String structureKind, String handle, String originId) {
this(kind, structureKind, handle, originId, 1f); // default contribution
}
public InteractionEvent(Kind kind, String structureKind, String handle, String originId, String navigatedRelation) {
this(kind, structureKind, handle, originId, navigatedRelation, "null", 1f); // default contribution
}
public InteractionEvent(Kind kind, String structureKind, String handle, String originId, String navigatedRelation, float interestContribution) {
this(kind, structureKind, handle, originId, navigatedRelation, "null", interestContribution); // default contribution
}
/**
* Factory method.
*/
public static InteractionEvent makeCommand(String originId, String delta) {
return new InteractionEvent(InteractionEvent.Kind.COMMAND, "null", "null", originId, "null", delta, 1);
}
/**
* Factory method.
*/
public static InteractionEvent makePreference(String originId, String delta) {
return new InteractionEvent(InteractionEvent.Kind.PREFERENCE, "null", "null", originId, "null", delta, 1); // default contribution
}
public InteractionEvent(Kind kind, String structureKind, String handle, String originId, float interestContribution) {
this(kind, structureKind, handle, originId, "null", "null", interestContribution); // default contribution
}
public InteractionEvent(Kind kind, String structureKind, String handle, String originId, String navigatedRelation, String delta, float interestContribution) {
this.date = Calendar.getInstance().getTime();
this.endDate = Calendar.getInstance().getTime();
this.kind = kind;
this.structureKind = structureKind;
this.structureHandle = handle;
this.originId = originId;
this.navigation = navigatedRelation;
this.delta = delta;
this.interestContribution = interestContribution;
}
public InteractionEvent(Kind kind,
String structureKind,
String handle,
String originId,
String navigatedRelation,
String delta,
float interestContribution,
Date startDate,
Date endDate) {
this.date = startDate;
this.endDate = endDate;
this.kind = kind;
this.structureKind = structureKind;
this.structureHandle = handle;
this.originId = originId;
this.navigation = navigatedRelation;
this.delta = delta;
this.interestContribution = interestContribution;
}
@Override
public boolean equals(Object object) {
if (object == null || !(object instanceof InteractionEvent)) return false;
InteractionEvent event = (InteractionEvent)object;
return (date == null ? event.date == null : date.equals(event.date))
&& (endDate == null ? event.endDate == null : endDate.equals(event.endDate))
&& (kind == null ? event.kind == null : kind.equals(event.kind))
&& (structureKind == null ? event.structureKind == null : structureKind.equals(event.structureKind))
&& (structureHandle == null ? event.structureHandle == null : structureHandle.equals(event.structureHandle))
&& (originId == null ? event.originId == null : originId.equals(event.originId))
&& (navigation == null ? event.navigation == null : navigation.equals(event.navigation))
&& (delta == null ? event.delta == null : delta.equals(event.delta))
&& interestContribution == event.interestContribution;
}
@Override
public String toString() {
return "(date: " + date
+ ", kind: "
+ kind + ", sourceHandle: "
+ structureHandle
+ ", origin: " + originId
+ ", delta: " + delta + ")";
}
public String getStructureHandle() {
return structureHandle;
}
public String getContentType() {
return structureKind;
}
public Date getDate() {
return date;
}
public String getDelta() {
return delta;
}
public Kind getKind() {
return kind;
}
public String getOriginId() {
return originId;
}
public float getInterestContribution() {
return interestContribution;
}
public Date getEndDate() {
return endDate;
}
public String getNavigation() {
return navigation;
}
}