/*
* Copyright (C) 2012, Katy Hilgenberg.
* Special acknowledgments to: Knowledge & Data Engineering Group, University of Kassel (http://www.kde.cs.uni-kassel.de).
* Contact: sdcf@cs.uni-kassel.de
*
* This file is part of the SDCFramework (Sensor Data Collection Framework) project.
*
* The SDCFramework 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 3 of the License, or
* (at your option) any later version.
*
* The SDCFramework 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 the SDCFramework. If not, see <http://www.gnu.org/licenses/>.
*/
package de.unikassel.android.sdcframework.preferences;
import android.annotation.SuppressLint;
import de.unikassel.android.sdcframework.data.TransmissionConfigurationEntry;
import de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration;
import de.unikassel.android.sdcframework.preferences.facade.TransmissionProtocolConfiguration;
import de.unikassel.android.sdcframework.util.facade.ArchiveTypes;
/**
* Implementation of the configuration for the transmission module.
*
* @author Katy Hilgenberg
*
*/
public class TransmissionConfigurationImpl implements TransmissionConfiguration
{
/**
* The minimum of samples to transfer
*/
private int minSampleTransferCount;
/**
* The maximum of samples to transfer
*/
private int maxSampleTransferCount;
/**
* The minimum frequency for the sample transfer in seconds ( the real
* transfer frequency does depend on many parameters and will differ )
*/
private long minTransferFrequency;
/**
* The archive type
*/
private ArchiveTypes archiveType;
/**
* The encryption enabled flag
*/
private boolean isEncryptionEnabled;
/**
* The protocol configuration
*/
private final TransmissionProtocolConfiguration protocolConfig;
/**
* Constructor
*/
public TransmissionConfigurationImpl()
{
super();
this.protocolConfig = new TransmissionProtocolConfigurationImpl();
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.UpdatableConfiguration
* #update(java.lang.Object)
*/
@Override
public void update( TransmissionConfiguration configuration )
{
setArchiveType( configuration.getArchiveType() );
setMaxSampleTransferCount( configuration.getMaxSampleTransferCount() );
setMinSampleTransferCount( configuration.getMinSampleTransferCount() );
setMinTransferFrequency( configuration.getMinTransferFrequency() );
setEncryptionEnabled( configuration.isEncryptionEnabled() );
getProtocolConfiguration().update( configuration.getProtocolConfiguration() );
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #
* update(de.unikassel.android.sdcframework.data.TransmissionConfigurationEntry
* )
*/
@SuppressLint( "DefaultLocale" )
@Override
public void update( TransmissionConfigurationEntry config )
{
String tmp = config.getArchiveType();
if ( tmp != null )
{
setArchiveType( ArchiveTypes.valueOf( tmp.toLowerCase() ) );
}
setMaxSampleTransferCount( config.getMaxSampleTransferCount() );
setMinSampleTransferCount( config.getMinSampleTransferCount() );
getProtocolConfiguration().update( config.getProtocolConfig() );
setMinTransferFrequency( config.getMinTransferFrequency() );
setEncryptionEnabled( config.getIsEncryptionEnabled() );
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals( Object o )
{
if ( o instanceof TransmissionConfiguration )
{
TransmissionConfiguration conf = (TransmissionConfiguration) o;
return conf.getMinSampleTransferCount() == getMinSampleTransferCount() &&
conf.getMaxSampleTransferCount() == getMaxSampleTransferCount() &&
conf.getMinTransferFrequency() == getMinTransferFrequency() &&
conf.getProtocolConfiguration().equals( getProtocolConfiguration() ) &&
equals( conf.getArchiveType(), getArchiveType() ) &&
equals( conf.isEncryptionEnabled(), isEncryptionEnabled() );
}
return false;
}
/**
* Test method for equivalence of two objects, allowing both being null as
* well
*
* @param o1
* first object
* @param o2
* second object
* @return true if equal pointers or equal values
*/
private static final boolean equals( Object o1, Object o2 )
{
if ( o1 != null && o2 != null )
{
// both objects are initialized return comparison value
return o1.equals( o2 );
}
// at least one object is null -> return true if both are null
return o1 == o2;
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #getMinSampleTransferCount()
*/
@Override
public int getMinSampleTransferCount()
{
return minSampleTransferCount;
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #setMinSampleTransferCount(int)
*/
@Override
public void setMinSampleTransferCount( Integer minSampleTransferCount )
{
if ( minSampleTransferCount != null )
this.minSampleTransferCount = minSampleTransferCount;
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #getMaxSampleTransferCount()
*/
@Override
public int getMaxSampleTransferCount()
{
return maxSampleTransferCount;
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #setMaxSampleTransferCount(int)
*/
@Override
public void setMaxSampleTransferCount( Integer maxSampleTransferCount )
{
if ( maxSampleTransferCount != null )
this.maxSampleTransferCount = maxSampleTransferCount;
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #getMinTransferFrequency()
*/
@Override
public long getMinTransferFrequency()
{
return minTransferFrequency;
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #setMinTransferFrequency(long)
*/
@Override
public void setMinTransferFrequency( Long minTransferFrequency )
{
if ( minTransferFrequency != null )
this.minTransferFrequency = minTransferFrequency;
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #getArchiveType()
*/
@Override
public ArchiveTypes getArchiveType()
{
return archiveType;
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #setArchiveType(de.unikassel.android.sdcframework.util.facade.ArchiveTypes)
*/
@Override
public void setArchiveType( ArchiveTypes archiveType )
{
if ( archiveType != null )
this.archiveType = archiveType;
}
/*
/* (non-Javadoc)
* @see de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration#getProtocolConfiguration()
*/
@Override
public TransmissionProtocolConfiguration getProtocolConfiguration()
{
return protocolConfig;
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #
* setProtocolConfiguration(de.unikassel.android.sdcframework.preferences.facade
* .TransmissionProtocolConfiguration)
*/
@Override
public void setProtocolConfiguration(
TransmissionProtocolConfiguration protocolConfig )
{
this.protocolConfig.update( protocolConfig );
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #isEncryptionEnabled()
*/
@Override
public Boolean isEncryptionEnabled()
{
return isEncryptionEnabled;
}
/*
* (non-Javadoc)
*
* @see
* de.unikassel.android.sdcframework.preferences.facade.TransmissionConfiguration
* #setEncryptionEnabled(java.lang.Boolean)
*/
@Override
public void setEncryptionEnabled( Boolean isEncryptionEnabled )
{
if ( isEncryptionEnabled != null )
this.isEncryptionEnabled = isEncryptionEnabled;
}
}