package org.ourgrid.discoveryservice.business.requester; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import org.ourgrid.common.internal.IResponseTO; import org.ourgrid.common.internal.RequesterIF; import org.ourgrid.common.internal.response.LoggerResponseTO; import org.ourgrid.discoveryservice.business.dao.DiscoveryServiceDAO; import org.ourgrid.discoveryservice.business.dao.DiscoveryServiceDAOFactory; import org.ourgrid.discoveryservice.business.dao.DiscoveryServiceInfo; import org.ourgrid.discoveryservice.request.DSGetDiscoveryServicesRequestTO; import org.ourgrid.discoveryservice.response.DSHereAreDiscoveryServicesResponseTO; import org.ourgrid.discoveryservice.response.PersistNetworkResponseTO; /** * Requirement 511 */ public class DSGetDiscoveryServicesRequester implements RequesterIF<DSGetDiscoveryServicesRequestTO>{ public List<IResponseTO> execute(DSGetDiscoveryServicesRequestTO request) { List<IResponseTO> responses = new ArrayList<IResponseTO>(); DiscoveryServiceDAO discoveryServiceDAO = DiscoveryServiceDAOFactory.getInstance().getDiscoveryServiceDAO(); String dsAddress = request.getDsAddress(); DiscoveryServiceInfo dsInfo = discoveryServiceDAO.getDSInfo(dsAddress); if (dsInfo != null) { dsInfo.setAsUp(); } else { discoveryServiceDAO.addDiscoveryService(new DiscoveryServiceInfo(dsAddress, true), new LinkedHashSet<String>()); PersistNetworkResponseTO to = new PersistNetworkResponseTO(); to.setDiscoveryServicesAddresses(discoveryServiceDAO.getAllDiscoveryServicesInfos()); responses.add(to); } responses.add(new LoggerResponseTO("The Discovery Service " + dsAddress + " requested my network list", LoggerResponseTO.DEBUG)); DSHereAreDiscoveryServicesResponseTO to = new DSHereAreDiscoveryServicesResponseTO(); to.setDiscoveryServices(discoveryServiceDAO.getAllDiscoveryServicesInfos()); to.setStubAddress(dsAddress); responses.add(to); return responses; } }