/**
* Copyright (C) 2011 Adriano Monteiro Marques
*
* Author: Zubair Nabi <zn.zubairnabi@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
package org.umit.icm.mobile.aggregator;
import java.io.IOException;
import org.umit.icm.mobile.process.Constants;
import org.umit.icm.mobile.process.ProcessActions;
import org.umit.icm.mobile.proto.MessageProtos.CheckAggregatorResponse;
import org.umit.icm.mobile.proto.MessageProtos.GetEventsResponse;
import org.umit.icm.mobile.proto.MessageProtos.GetPeerListResponse;
import org.umit.icm.mobile.proto.MessageProtos.GetSuperPeerListResponse;
import org.umit.icm.mobile.proto.MessageProtos.LoginResponse;
import org.umit.icm.mobile.proto.MessageProtos.NewTestsResponse;
import org.umit.icm.mobile.proto.MessageProtos.NewVersionResponse;
import org.umit.icm.mobile.proto.MessageProtos.RegisterAgentResponse;
import org.umit.icm.mobile.proto.MessageProtos.SendReportResponse;
import org.umit.icm.mobile.proto.MessageProtos.TestSuggestionResponse;
/**
* Takes actions based on the response messages received from the HTTP POSTs to
* the aggregator.
*/
public class AggregatorActions {
/**
* Returns a boolean object from
{@link ProcessActions} method. Calls {@link ProcessActions#updateAgentVersion} and
* {@link ProcessActions#updateTestsVersion} on the ResponseHeader and passes the complete response
* message to {@link ProcessActions#registerAgent}.
*
*
@param registerAgentResponse An object of the type RegisterAgentResponse
*
@return boolean
* @throws Exception
*
@see ProcessActions
*
*
@see AggregatorRetrieve
*/
public static boolean registerAgentAction(RegisterAgentResponse registerAgentResponse) throws Exception {
if(Constants.DEBUG_MODE)
System.out.println("Inside AggreagatorActions#registerAgentAction");
ProcessActions.updateAgentVersion(registerAgentResponse.getHeader());
//ProcessActions.updateTestsVersion(registerAgentResponse.getHeader());
return ProcessActions.registerAgent(registerAgentResponse);
}
/**
* Returns a boolean object from
{@link ProcessActions} method. Calls {@link ProcessActions#updateAgentVersion} and
* {@link ProcessActions#updateTestsVersion} on the ResponseHeader and
* passes the peer list to {@link ProcessActions#updatePeersList}.
*
*
@param getPeerListResponse An object of the type GetPeerListResponse
*
@return boolean
* @throws Exception
*
@see ProcessActions
*
*
@see AggregatorRetrieve
*/
public static boolean getPeerListAction(GetPeerListResponse getPeerListResponse) throws Exception {
ProcessActions.updateAgentVersion(getPeerListResponse.getHeader());
ProcessActions.updateTestsVersion(getPeerListResponse.getHeader());
return ProcessActions.updatePeersList(getPeerListResponse.getKnownPeersList());
}
/**
* Returns a boolean object from
{@link ProcessActions} method. Calls {@link ProcessActions#updateAgentVersion} and
* {@link ProcessActions#updateTestsVersion} on the ResponseHeader and
* passes the super peer list to {@link ProcessActions#updateSuperPeersList}.
*
*
@param getSuperPeerListResponse An object of the type GetSuperPeerListResponse
*
@return boolean
* @throws Exception
*
@see ProcessActions
*
*
@see AggregatorRetrieve
*/
public static boolean getSuperPeerListAction(GetSuperPeerListResponse getSuperPeerListResponse) throws Exception {
ProcessActions.updateAgentVersion(getSuperPeerListResponse.getHeader());
ProcessActions.updateTestsVersion(getSuperPeerListResponse.getHeader());
return ProcessActions.updateSuperPeersList(getSuperPeerListResponse.getKnownSuperPeersList());
}
/**
* Returns a boolean object from
{@link ProcessActions} method. Calls {@link ProcessActions#updateAgentVersion} and
* {@link ProcessActions#updateTestsVersion} on the ResponseHeader and
* passes the event list to {@link ProcessActions#updateEventsList}.
*
*
@param getEventsResponse An object of the type GetEventsResponse
*
@return boolean
* @throws Exception
*
@see ProcessActions
*
*
@see AggregatorRetrieve
*/
public static boolean getEventsAction(GetEventsResponse getEventsResponse) throws Exception {
ProcessActions.updateAgentVersion(getEventsResponse.getHeader());
ProcessActions.updateTestsVersion(getEventsResponse.getHeader());
return ProcessActions.updateEventsList(getEventsResponse.getEventsList());
}
/**
* Returns a boolean true. Calls {@link ProcessActions#updateAgentVersion} and
* {@link ProcessActions#updateTestsVersion} on the ResponseHeader.
*
*
@param sendReportResponse An object of the type SendReportResponse
*
@return boolean
* @throws Exception
*
@see ProcessActions
*
*
@see AggregatorRetrieve
*/
public static boolean sendReportAction(SendReportResponse sendReportResponse) throws Exception {
ProcessActions.updateAgentVersion(sendReportResponse.getHeader());
ProcessActions.updateTestsVersion(sendReportResponse.getHeader());
return true;
}
/**
* Returns a boolean object from
{@link ProcessActions} method. Calls {@link ProcessActions#updateAgent} on
* the ResponseHeader.
*
*
@param newVersionResponse An object of the type NewVersionResponse
*
@return boolean
*
@see ProcessActions
*
*
@see AggregatorRetrieve
*/
public static boolean checkVersionAction(NewVersionResponse newVersionResponse) throws IOException {
return ProcessActions.updateAgent(newVersionResponse);
}
/**
* Returns a boolean object from
{@link ProcessActions} method. Calls {@link ProcessActions#updateTests} on
* the ResponseHeader.
*
*
@param newTestsResponse An object of the type NewTestsResponse
*
@return boolean
*
@see ProcessActions
*
*
@see AggregatorRetrieve
*/
public static boolean newTestsAction(NewTestsResponse newTestsResponse) throws IOException {
return ProcessActions.updateTests(newTestsResponse.getTestsList());
}
/**
* Returns a boolean true. Calls {@link ProcessActions#updateAgentVersion} and
* {@link ProcessActions#updateTestsVersion} on the ResponseHeader.
*
*
@param testSuggestionResponse An object of the type TestSuggestionResponse
*
@return boolean
* @throws Exception
*
@see ProcessActions
*
*
@see AggregatorRetrieve
*/
public static boolean sendSuggestionAction(TestSuggestionResponse testSuggestionResponse) throws Exception {
ProcessActions.updateAgentVersion(testSuggestionResponse.getHeader());
ProcessActions.updateTestsVersion(testSuggestionResponse.getHeader());
return true;
}
/**
* Returns a boolean object. Calls {@link ProcessActions#updateAgentVersion} and
* {@link ProcessActions#updateTestsVersion} on the ResponseHeader.
*
*
@param checkAggregatorResponse An object of the type CheckAggregatorResponse
*
@return boolean
* @throws Exception
*
@see ProcessActions
*
*
@see AggregatorRetrieve
*/
public static boolean checkAggregatorAction(CheckAggregatorResponse checkAggregatorResponse) throws Exception {
ProcessActions.updateAgentVersion(checkAggregatorResponse.getHeader());
ProcessActions.updateTestsVersion(checkAggregatorResponse.getHeader());
if(checkAggregatorResponse.getStatus().equalsIgnoreCase("ON"))
return true;
else
return false;
}
/**
* Returns a boolean true. Calls {@link ProcessActions#updateAgentVersion} and
* {@link ProcessActions#updateTestsVersion} on the ResponseHeader.
*
*
@param loginResponse An object of the type LoginResponse
*
@return boolean
* @throws Exception
*
@see ProcessActions
*
*
@see AggregatorRetrieve
*/
public static boolean loginAction(LoginResponse loginResponse) throws Exception {
ProcessActions.updateAgentVersion(loginResponse.getHeader());
ProcessActions.updateTestsVersion(loginResponse.getHeader());
return true;
}
}