/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.social.kernel.model;
import com.liferay.portal.kernel.util.HashUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import java.io.Serializable;
import java.util.Objects;
/**
* @author Zsolt Berentey
*/
public class SocialActivityCounterDefinition implements Serializable {
public static final int LIMIT_PERIOD_DAY = 1;
public static final int LIMIT_PERIOD_LIFETIME = 2;
public static final int LIMIT_PERIOD_PERIOD = 3;
public SocialActivityCounterDefinition() {
}
public SocialActivityCounterDefinition(String name, int ownerType) {
_name = name;
_ownerType = ownerType;
}
@Override
public SocialActivityCounterDefinition clone() {
SocialActivityCounterDefinition activityCounterDefinition =
new SocialActivityCounterDefinition();
activityCounterDefinition.setEnabled(_enabled);
activityCounterDefinition.setIncrement(_increment);
activityCounterDefinition.setLimitEnabled(_limitEnabled);
activityCounterDefinition.setLimitPeriod(_limitPeriod);
activityCounterDefinition.setLimitValue(_limitValue);
activityCounterDefinition.setName(_name);
activityCounterDefinition.setOwnerType(_ownerType);
activityCounterDefinition.setPeriodLength(_periodLength);
activityCounterDefinition.setTransient(_transient);
return activityCounterDefinition;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof SocialActivityCounterDefinition)) {
return false;
}
SocialActivityCounterDefinition activityCounterDefinition =
(SocialActivityCounterDefinition)obj;
if ((activityCounterDefinition != null) &&
(_enabled == activityCounterDefinition._enabled) &&
(_increment == activityCounterDefinition._increment) &&
(_limitEnabled == activityCounterDefinition._limitEnabled) &&
(_limitPeriod == activityCounterDefinition._limitPeriod) &&
(_limitValue == activityCounterDefinition._limitValue) &&
Objects.equals(_name, activityCounterDefinition._name) &&
(_ownerType == activityCounterDefinition._ownerType) &&
(_periodLength == activityCounterDefinition._periodLength) &&
(_transient == activityCounterDefinition._transient)) {
return true;
}
return false;
}
public int getIncrement() {
return _increment;
}
public String getKey() {
return _name.concat(StringPool.SLASH).concat(
String.valueOf(_ownerType));
}
public int getLimitPeriod() {
return _limitPeriod;
}
public int getLimitValue() {
return _limitValue;
}
public String getName() {
return _name;
}
public int getOwnerType() {
return _ownerType;
}
public int getPeriodLength() {
return _periodLength;
}
@Override
public int hashCode() {
int hash = HashUtil.hash(0, _enabled);
hash = HashUtil.hash(hash, _increment);
hash = HashUtil.hash(hash, _limitEnabled);
hash = HashUtil.hash(hash, _limitPeriod);
hash = HashUtil.hash(hash, _limitValue);
hash = HashUtil.hash(hash, _name);
hash = HashUtil.hash(hash, _ownerType);
hash = HashUtil.hash(hash, _periodLength);
return HashUtil.hash(hash, _transient);
}
public boolean isEnabled() {
return _enabled;
}
public boolean isLimitEnabled() {
return _limitEnabled;
}
public boolean isTransient() {
return _transient;
}
public void setEnabled(boolean enabled) {
_enabled = enabled;
}
public void setIncrement(int increment) {
_increment = increment;
}
public void setLimitEnabled(boolean limitEnabled) {
_limitEnabled = limitEnabled;
}
public void setLimitPeriod(int limitPeriod) {
_limitPeriod = limitPeriod;
}
public void setLimitPeriod(String limitPeriod) {
if (StringUtil.equalsIgnoreCase(limitPeriod, "day")) {
setLimitPeriod(LIMIT_PERIOD_DAY);
}
else if (StringUtil.equalsIgnoreCase(limitPeriod, "lifetime")) {
setLimitPeriod(LIMIT_PERIOD_LIFETIME);
}
else {
setLimitPeriod(LIMIT_PERIOD_PERIOD);
}
}
public void setLimitValue(int limitValue) {
_limitValue = limitValue;
}
public void setName(String name) {
_name = name;
}
public void setOwnerType(int ownerType) {
_ownerType = ownerType;
}
public void setOwnerType(String ownerType) {
if (StringUtil.equalsIgnoreCase(ownerType, "actor")) {
setOwnerType(SocialActivityCounterConstants.TYPE_ACTOR);
}
else if (StringUtil.equalsIgnoreCase(ownerType, "asset")) {
setOwnerType(SocialActivityCounterConstants.TYPE_ASSET);
}
else if (StringUtil.equalsIgnoreCase(ownerType, "creator")) {
setOwnerType(SocialActivityCounterConstants.TYPE_CREATOR);
}
}
public void setPeriodLength(int periodLength) {
_periodLength = periodLength;
}
public void setTransient(boolean transientCounter) {
_transient = transientCounter;
}
private boolean _enabled = true;
private int _increment = 1;
private boolean _limitEnabled = true;
private int _limitPeriod = LIMIT_PERIOD_DAY;
private int _limitValue;
private String _name;
private int _ownerType;
private int _periodLength =
SocialActivityCounterConstants.PERIOD_LENGTH_SYSTEM;
private boolean _transient;
}