/**
* Copyright (c) 2011, SOCIETIES Consortium (WATERFORD INSTITUTE OF TECHNOLOGY (TSSG), HERIOT-WATT UNIVERSITY (HWU), SOLUTA.NET
* (SN), GERMAN AEROSPACE CENTRE (Deutsches Zentrum fuer Luft- und Raumfahrt e.V.) (DLR), Zavod za varnostne tehnologije
* informacijske družbe in elektronsko poslovanje (SETCCE), INSTITUTE OF COMMUNICATION AND COMPUTER SYSTEMS (ICCS), LAKE
* COMMUNICATIONS (LAKE), INTEL PERFORMANCE LEARNING SOLUTIONS LTD (INTEL), PORTUGAL TELECOM INOVAÇÃO, SA (PTIN), IBM Corp.,
* INSTITUT TELECOM (ITSUD), AMITEC DIACHYTI EFYIA PLIROFORIKI KAI EPIKINONIES ETERIA PERIORISMENIS EFTHINIS (AMITEC), TELECOM
* ITALIA S.p.a.(TI), TRIALOG (TRIALOG), Stiftelsen SINTEF (SINTEF), NEC EUROPE LTD (NEC))
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.societies.personalisation.dianne.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.societies.api.schema.servicelifecycle.model.ServiceResourceIdentifier;
public class Network implements Serializable
{
private Logger LOG = LoggerFactory.getLogger(Network.class);
private static final long serialVersionUID = 1L;
private ArrayList<ContextGroup> contextGroups;
private ArrayList<OutcomeGroup> outcomeGroups;
private ArrayList<Synapse> synapses;
public Network()
{
contextGroups = new ArrayList<ContextGroup>();
outcomeGroups = new ArrayList<OutcomeGroup>();
synapses = new ArrayList<Synapse>();
}
public ArrayList<ContextGroup> getContextGroups(){
return contextGroups;
}
public ArrayList<OutcomeGroup> getOutcomeGroups(){
return outcomeGroups;
}
public ArrayList<Synapse> getSynapses(){
return synapses;
}
public ContextGroup getContextGroup(String groupName){
ContextGroup requestedGroup = null;
Iterator<ContextGroup> list_it = this.getContextGroups().iterator();
while(list_it.hasNext())
{
ContextGroup group = (ContextGroup)list_it.next();
if(group.getGroupName().equals(groupName))
{
requestedGroup = group;
break;
}
}
return requestedGroup;
}
public OutcomeGroup getOutcomeGroup(ServiceResourceIdentifier serviceId, String groupName){
OutcomeGroup requestedGroup = null;
Iterator <OutcomeGroup>list_it = this.getOutcomeGroups().iterator();
LOG.debug("Number of outcome groups = "+this.getOutcomeGroups().size());
while(list_it.hasNext())
{
OutcomeGroup group = (OutcomeGroup)list_it.next();
LOG.debug("Checking if "+group.getServiceId().getServiceInstanceIdentifier()+" equals "+serviceId.getServiceInstanceIdentifier());
if(group.getServiceId().getServiceInstanceIdentifier().equals(serviceId.getServiceInstanceIdentifier())){
if(group.getGroupName().equals(groupName))
{
requestedGroup = group;
break;
}
}
}
return requestedGroup;
}
public void addContextGroup(ContextGroup newContextGroup){
contextGroups.add(newContextGroup);
}
public void addOutcomeGroup(OutcomeGroup newOutcomeGroup){
LOG.debug("Adding new outcome group: "+newOutcomeGroup.getServiceId().getServiceInstanceIdentifier()+"->"+newOutcomeGroup.getGroupName());
outcomeGroups.add(newOutcomeGroup);
}
public void addSynapse(Synapse newSynapse){
synapses.add(newSynapse);
}
public void printNetwork()
{
System.out.println();
System.out.println("**************Context Groups************");
Iterator contextGroups_it = contextGroups.iterator();
while(contextGroups_it.hasNext())
{
Group nextGroup = (Group)contextGroups_it.next();
System.out.println("Group - "+nextGroup.getGroupName());
ArrayList groupNodes = nextGroup.getGroupNodes();
Iterator groupNodes_it = groupNodes.iterator();
while(groupNodes_it.hasNext())
{
Node nextNode = (Node)groupNodes_it.next();
System.out.println(nextNode.getNodeName()+
": active("+nextNode.getActive()+")");
}
}
System.out.println();
System.out.println("*************Outcome Groups**************");
Iterator outcomeGroups_it = outcomeGroups.iterator();
while(outcomeGroups_it.hasNext())
{
Group nextGroup = (Group)outcomeGroups_it.next();
System.out.println("Group - "+nextGroup.getGroupName());
ArrayList groupNodes = nextGroup.getGroupNodes();
Iterator groupNodes_it = groupNodes.iterator();
while(groupNodes_it.hasNext())
{
OutcomeNode nextNode = (OutcomeNode)groupNodes_it.next();
System.out.println(nextNode.getNodeName()+
": active("+nextNode.getActive()+
") potential("+nextNode.getPotential()+")");
}
}
System.out.println();
System.out.println("***************Synapses*******************");
Iterator synapses_it = synapses.iterator();
while(synapses_it.hasNext())
{
Synapse nextSynapse = (Synapse)synapses_it.next();
System.out.println(nextSynapse.getId()+
": preNode("+nextSynapse.getPreNode().getNodeName()+
") postNode("+nextSynapse.getPostNode().getNodeName()+
") weight("+nextSynapse.getWeight()+")");
}
System.out.println();
}
}