/*
* JBoss, Home of Professional Open Source
* Copyright 2011, Red Hat, Inc. and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This 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 software 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.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.mobicents.protocols.ss7.map.smstpdu;
import org.mobicents.protocols.ss7.map.api.smstpdu.AbsoluteTimeStamp;
import org.mobicents.protocols.ss7.map.api.smstpdu.ValidityEnhancedFormatData;
import org.mobicents.protocols.ss7.map.api.smstpdu.ValidityPeriod;
import org.mobicents.protocols.ss7.map.api.smstpdu.ValidityPeriodFormat;
/**
*
* @author sergey vetyutnev
*
*/
public class ValidityPeriodImpl implements ValidityPeriod {
private Integer relativeFormatValue;
private AbsoluteTimeStamp absoluteFormatValue;
private ValidityEnhancedFormatData enhancedFormatValue;
public ValidityPeriodImpl(int relativeFormatValue) {
this.relativeFormatValue = relativeFormatValue;
}
public ValidityPeriodImpl(AbsoluteTimeStamp absoluteFormatValue) {
this.absoluteFormatValue = absoluteFormatValue;
}
public ValidityPeriodImpl(ValidityEnhancedFormatData enhancedFormatValue) {
this.enhancedFormatValue = enhancedFormatValue;
}
public ValidityPeriodFormat getValidityPeriodFormat() {
if (relativeFormatValue != null)
return ValidityPeriodFormat.fieldPresentRelativeFormat;
if (absoluteFormatValue != null)
return ValidityPeriodFormat.fieldPresentAbsoluteFormat;
if (enhancedFormatValue != null)
return ValidityPeriodFormat.fieldPresentEnhancedFormat;
return ValidityPeriodFormat.fieldNotPresent;
}
public Integer getRelativeFormatValue() {
return this.relativeFormatValue;
}
public Double getRelativeFormatHours() {
if (this.relativeFormatValue == null)
return null;
int i1 = this.relativeFormatValue;
if (i1 < 0)
i1 = 0;
if (i1 > 255)
i1 = 255;
if (i1 <= 143) {
return (i1 + 1) * 5.0 / 60.0;
}
if (i1 <= 167) {
return 12 + (i1 - 143) * 0.5;
}
if (i1 <= 196) {
return (i1 - 166) * 24.0;
}
return (i1 - 192) * 24.0 * 7.0;
}
public AbsoluteTimeStamp getAbsoluteFormatValue() {
return this.absoluteFormatValue;
}
public ValidityEnhancedFormatData getEnhancedFormatValue() {
return this.enhancedFormatValue;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("TP-Validity-Period [");
if (relativeFormatValue != null) {
sb.append("Relative hours=");
sb.append(this.getRelativeFormatHours());
} else if (absoluteFormatValue != null) {
sb.append("Absolute=");
sb.append(this.getAbsoluteFormatValue().toString());
} else if (enhancedFormatValue != null) {
sb.append("Enhanced=");
sb.append(this.getEnhancedFormatValue().toString());
}
sb.append("]");
return sb.toString();
}
}