package gov.nih.ncgc.bard.resourcemgr;
import ftp.FtpException;
import gov.nih.ncgc.bard.resourcemgr.util.BardResourceFetch;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Properties;
import java.util.logging.Logger;
public abstract class BardExtResourceLoader implements IBardExtResourceLoader {
protected Logger log = Logger.getLogger(BardExtResourceLoader.class.getName());
protected Properties loaderProps;
protected BardResourceService service;
protected Connection conn;
protected String statusText;
public BardExtResourceLoader() {
statusText = "Loading new CID_SID mappings.";
}
public BardExtResourceLoader(Properties loaderProps) {
this.loaderProps = loaderProps;
}
public void setLoaderProps(Properties loaderProps) {
this.loaderProps = loaderProps;
}
public void setService(BardResourceService service) {
this.service = service;
}
private boolean fetchExternalResource(String server, String extPath, String localDir, int protocol,
int extResourceFormat, String uname, String pw) {
boolean fetched = false;
if(protocol == BardResourceService.ResourceProtocolTypes.FTP.ordinal()) {
BardResourceFetch retriever = new BardResourceFetch();
try {
retriever.fetchFTPFileResource(server, uname, pw, extPath, localDir);
fetched = true;
} catch (IOException e) {
e.printStackTrace();
} catch (FtpException e) {
e.printStackTrace();
}
}
return fetched;
}
protected boolean fetchExternalResource() {
boolean fetched = true;
ArrayList <BardExternalResource> resources = service.getExtResources();
for(BardExternalResource resource : resources) {
log.info("fetching external resource");
if(!fetchExternalResource(
resource.getResourceServer(),
resource.getResourcePath()+"/"+resource.getFileName(),
service.getLocalResPath()+"/"+resource.getFileName(),
resource.getResourceProtocolType(),
resource.getCompressionType(),
resource.getResourceUserName(),
resource.getResourcePassword())) {
//only alter to false if not fetched
fetched = false;
}
}
return fetched;
}
protected boolean fetchExternalResourcesFromExtDir() {
boolean fetched = true;
ArrayList <BardExternalResource> resources = service.getExtResources();
for(BardExternalResource resource : resources) {
log.info("fetching external resource");
if(!fetchExternalResourcesFromDir(
resource.getResourceServer(),
resource.getResourcePath()+"/"+resource.getFileName(),
service.getLocalResPath()+"/"+resource.getFileName(),
resource.getResourceProtocolType(),
resource.getCompressionType(),
resource.getResourceUserName(),
resource.getResourcePassword())) {
//only alter to false if not fetched
fetched = false;
}
}
return fetched;
}
private boolean fetchExternalResourcesFromDir(String server, String extPath, String localDir, int protocol,
int extResourceFormat, String uname, String pw) {
boolean fetched = false;
if(protocol == BardResourceService.ResourceProtocolTypes.FTP.ordinal()) {
BardResourceFetch retriever = new BardResourceFetch();
try {
retriever.fetchFTPFileResource(server, uname, pw, extPath, localDir);
} catch (IOException e) {
e.printStackTrace();
} catch (FtpException e) {
e.printStackTrace();
}
}
return fetched;
}
protected void gunZip(String source, String dest) {
try {
BardResourceFetch.gunzipFile(source, dest);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}