/**
* Copyright (c) 2010-2016 by the respective copyright holders.
*
* 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
*/
package org.openhab.binding.caldav_personal.internal;
import java.util.ArrayList;
import java.util.List;
import org.openhab.core.binding.BindingConfig;
/**
* Configuration class
*
* @author Robert Delbrück
* @since 1.8.0
*
*/
public class CalDavConfig implements BindingConfig {
public static enum Type {
PRESENCE,
EVENT,
ACTIVE,
UPCOMING
}
public static enum Value {
NAME,
DESCRIPTION,
PLACE,
START,
END,
TIME,
NAMEANDTIME
}
private final List<String> calendar;
private final Type type;
private final int eventNr;
private final Value value;
private final String filterName;
private final List<String> filterCategory = new ArrayList<String>();
private final boolean categoriesFiltersAny;
public CalDavConfig(List<String> calendar, Type type, int eventNr, Value value, String filterName,
List<String> filterCategory) {
this.calendar = calendar;
this.type = type;
this.eventNr = eventNr;
this.value = value;
this.filterName = filterName;
this.filterCategory.addAll(filterCategory);
this.categoriesFiltersAny = false;
}
public CalDavConfig(List<String> calendar, Type type, int eventNr, Value value, String filterName,
List<String> filterCategory, boolean categoriesFiltersAny) {
this.calendar = calendar;
this.type = type;
this.eventNr = eventNr;
this.value = value;
this.filterName = filterName;
this.filterCategory.addAll(filterCategory);
this.categoriesFiltersAny = categoriesFiltersAny;
}
public boolean getCategoriesFiltersAny() {
return categoriesFiltersAny;
}
public List<String> getCalendar() {
return calendar;
}
public Type getType() {
return type;
}
public int getEventNr() {
return eventNr;
}
public Value getValue() {
return value;
}
public String getFilterName() {
return filterName;
}
public List<String> getFilterCategory() {
return filterCategory;
}
@Override
public String toString() {
return "CalDavPresenceConfig [calendar=" + calendar + ", type=" + type + ", eventNr=" + eventNr + ", value="
+ value + ", filterName=" + filterName + ", categoriesFiltersAny=" + categoriesFiltersAny + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((calendar == null) ? 0 : calendar.hashCode());
result = prime * result + eventNr;
result = prime * result + ((filterCategory == null) ? 0 : filterCategory.hashCode());
result = prime * result + ((filterName == null) ? 0 : filterName.hashCode());
result = prime * result + ((type == null) ? 0 : type.hashCode());
result = prime * result + ((value == null) ? 0 : value.hashCode());
result = prime * result + (categoriesFiltersAny ? 1231 : 1237);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
CalDavConfig other = (CalDavConfig) obj;
if (calendar == null) {
if (other.calendar != null) {
return false;
}
} else if (!calendar.equals(other.calendar)) {
return false;
}
if (eventNr != other.eventNr) {
return false;
}
if (filterCategory == null) {
if (other.filterCategory != null) {
return false;
}
} else if (!filterCategory.equals(other.filterCategory)) {
return false;
}
if (filterName == null) {
if (other.filterName != null) {
return false;
}
} else if (!filterName.equals(other.filterName)) {
return false;
}
if (type != other.type) {
return false;
}
if (value != other.value) {
return false;
}
if (categoriesFiltersAny != other.categoriesFiltersAny) {
return false;
}
return true;
}
public int getUniqueEventListKey() {
final int prime = 31;
int result = 1;
result = prime * result + ((calendar == null) ? 0 : calendar.hashCode());
result = prime * result + ((filterCategory == null) ? 0 : filterCategory.hashCode());
result = prime * result + ((filterName == null) ? 0 : filterName.hashCode());
result = prime * result + (categoriesFiltersAny ? 1231 : 1237);
return result;
}
}