/*
* Copyright 2013 Esri.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.esri.gpt.agp.ags;
import com.esri.gpt.agp.client.AgpConnection;
import com.esri.gpt.agp.client.AgpCredentials;
import com.esri.gpt.agp.client.AgpTokenCriteria;
import com.esri.gpt.agp.sync.AgpDestination;
import com.esri.gpt.catalog.arcgis.agportal.publication.PublicationRequest;
import com.esri.gpt.catalog.harvest.protocols.HostContextPair;
import com.esri.gpt.control.webharvest.client.arcgis.ArcGISInfo;
import com.esri.gpt.framework.collection.StringAttributeMap;
import com.esri.gpt.framework.context.RequestContext;
import com.esri.gpt.framework.scheduler.IScheduledTask;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.sql.Timestamp;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Copies from ArcGIS Server to Portal for ArcGIS (scheduled task).
*/
public class Ags2AgpCopyTask implements Runnable, IScheduledTask {
/** class variables ========================================================= */
private static final Logger LOGGER = Logger.getLogger(Ags2AgpCopyTask.class.getName());
private StringAttributeMap parameters;
@Override
public void setParameters(StringAttributeMap parameters) {
this.parameters = parameters;
}
@Override
public void run() {
try {
ArcGISInfo source = getSource();
AgpDestination destination = getDestination();
Ags2AgpCopy copy = new Ags2AgpCopy(source, destination);
copy.copy();
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "Error in Ags2AgpCopyTask.", e);
} finally {
LOGGER.info("Ags2AgpCopyTask completed.");
}
}
private ArcGISInfo getSource() {
return new ArcGISInfo(
parameters.getValue("ags.restUrl"),
parameters.getValue("ags.soapUrl"),
parameters.getValue("ags.userName"),
parameters.getValue("ags.userPassword"));
}
private AgpDestination getDestination() {
AgpConnection connection = new AgpConnection();
AgpDestination destination = new AgpDestination();
destination.setConnection(connection);
HostContextPair hcp = HostContextPair.makeHostContextPair(parameters.getValue("agp.host"));
connection.setHost(hcp.getHost());
connection.setWebContext(hcp.getContext());
AgpTokenCriteria agpTokenCriteria = new AgpTokenCriteria();
agpTokenCriteria.setCredentials(new AgpCredentials(parameters.getValue("agp.userName"), parameters.getValue("agp.userPassword")));
agpTokenCriteria.setReferer(getReferrer());
connection.setTokenCriteria(agpTokenCriteria);
destination.setDestinationOwner(parameters.getValue("agp.owner"));
destination.setDestinationFolderID(parameters.getValue("agp.folder"));
return destination;
}
/**
* Gets referrer.
* @return referrer
*/
protected String getReferrer() {
try {
return InetAddress.getLocalHost().getCanonicalHostName();
} catch (UnknownHostException ex) {
return "";
}
}
}