List of usage examples for org.apache.commons.net.ftp FTPClient retrieveFile
public boolean retrieveFile(String remote, OutputStream local) throws IOException
From source file:org.apache.tools.ant.taskdefs.optional.net.FTPTaskMirrorImpl.java
/** * Retrieve a single file from the remote host. <code>filename</code> may * contain a relative path specification. <p> * * The file will then be retreived using the entire relative path spec - * no attempt is made to change directories. It is anticipated that this * may eventually cause problems with some FTP servers, but it simplifies * the coding.</p>//from w ww. j a va 2 s .c o m * @param ftp the ftp client * @param dir local base directory to which the file should go back * @param filename relative path of the file based upon the ftp remote directory * and/or the local base directory (dir) * @throws IOException in unknown circumstances * @throws BuildException if skipFailedTransfers is false * and the file cannot be retrieved. */ protected void getFile(FTPClient ftp, String dir, String filename) throws IOException, BuildException { OutputStream outstream = null; try { File file = task.getProject().resolveFile(new File(dir, filename).getPath()); if (task.isNewer() && isUpToDate(ftp, file, resolveFile(filename))) { return; } if (task.isVerbose()) { task.log("transferring " + filename + " to " + file.getAbsolutePath()); } File pdir = file.getParentFile(); if (!pdir.exists()) { pdir.mkdirs(); } outstream = new BufferedOutputStream(new FileOutputStream(file)); ftp.retrieveFile(resolveFile(filename), outstream); if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { String s = "could not get file: " + ftp.getReplyString(); if (task.isSkipFailedTransfers()) { task.log(s, Project.MSG_WARN); skipped++; } else { throw new BuildException(s); } } else { task.log("File " + file.getAbsolutePath() + " copied from " + task.getServer(), Project.MSG_VERBOSE); transferred++; if (task.isPreserveLastModified()) { outstream.close(); outstream = null; FTPFile[] remote = ftp.listFiles(resolveFile(filename)); if (remote.length > 0) { FILE_UTILS.setFileLastModified(file, remote[0].getTimestamp().getTime().getTime()); } } } } finally { FileUtils.close(outstream); } }
From source file:org.covito.kit.file.support.FtpFileServiceImpl.java
/** * {@inheritDoc}//www . ja v a 2 s .c o m * * @author covito * @param path * @return */ @Override public FileMeta getFileInfo(String path) { init(); if (path == null || path.length() == 0) { return null; } FileMeta file = new FileMeta(); FTPClient client = getConnect(); if (!dealDocPath(client, path, false)) { throw new FileServiceException("path not exist!"); } ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { boolean sucess = client.retrieveFile(getMetaPath(path), bos); if (!sucess) { log.error(client.getReplyString()); throw new FileServiceException("path is not exist!"); } } catch (IOException e) { e.printStackTrace(); throw new FileServiceException("path is not exist!"); } JSONObject json = JSON.parseObject(bos.toString()); Map<String, String> meta = JSON.parseObject(json.toString(), Map.class); file.setMeta(meta); file.setFileName(meta.get(FileMeta.KEY_FILENAME)); try { FTPFile ftpfile = client.mlistFile(rootWorkingDirectory + "/" + path); file.setCreateTime(new Date(ftpfile.getTimestamp().getTimeInMillis())); file.setFileSize(ftpfile.getSize()); } catch (IOException e1) { e1.printStackTrace(); } return file; }
From source file:org.covito.kit.file.support.FtpFileServiceImpl.java
/** * {@inheritDoc}/* ww w .ja v a 2 s .c o m*/ * * @author covito * @param path * @param os */ @Override public void outputFile(String path, OutputStream os) { init(); if (os == null) { throw new FileServiceException("OutputStream is null"); } FTPClient client = getConnect(); try { if (!dealDocPath(client, path, false)) { throw new FileServiceException("path not exist!"); } boolean sucess = client.retrieveFile(getFilePath(path), os); if (!sucess) { log.error(client.getReplyString()); throw new FileServiceException(client.getReplyString()); } } catch (IOException e) { e.printStackTrace(); } }
From source file:org.covito.kit.file.support.FtpFileServiceImpl.java
/** * {@inheritDoc}/*from w w w . j a va2s . c o m*/ * * @author covito * @param path * @param meta */ @Override public void updataMeta(String path, Map<String, String> meta) { init(); FTPClient client = getConnect(); if (!dealDocPath(client, path, false)) { throw new FileServiceException("path not exist!"); } ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { boolean sucess = client.retrieveFile(getMetaPath(path), bos); if (!sucess) { log.error(client.getReplyString()); throw new FileServiceException(client.getReplyString()); } } catch (IOException e1) { e1.printStackTrace(); throw new FileServiceException("path not exist!"); } JSONObject json = JSON.parseObject(bos.toString()); json.putAll(meta); ByteArrayInputStream bis = new ByteArrayInputStream(json.toString().getBytes()); try { boolean sucess = client.storeFile(getMetaPath(path), bis); if (!sucess) { log.error(client.getReplyString()); throw new FileServiceException(client.getReplyString()); } } catch (IOException e) { e.printStackTrace(); } }
From source file:org.geon.XMLToADN.java
private String process(String xmlString) { Map metadata = new HashMap(); // Extracting user input (name/value pairs) into a hashmap. int nameStartInd = xmlString.toLowerCase().indexOf("<name>"); while (nameStartInd != -1) { int nameEndInd = xmlString.toLowerCase().indexOf("</name>"); String name = xmlString.substring(nameStartInd + 6, nameEndInd); xmlString = xmlString.substring(nameEndInd + 7); int valueStartInd = xmlString.toLowerCase().indexOf("<value>"); int valueEndInd = xmlString.toLowerCase().indexOf("</value>"); String value = xmlString.substring(valueStartInd + 7, valueEndInd); xmlString = xmlString.substring(valueEndInd + 8); metadata.put(name, value);//from w w w . ja v a 2s. c o m nameStartInd = xmlString.toLowerCase().indexOf("<name>"); } String errMsg = ""; String title = (String) metadata.get("title"); String subjectss = (String) metadata.get("subjects"); String keywords = (String) metadata.get("keywords"); String permission = (String) metadata.get("permission"); String description = (String) metadata.get("description"); String personOrOrg1 = (String) metadata.get("person1"); String role1 = (String) metadata.get("role1"); String nametitle1 = (String) metadata.get("nametitle1"); String firstname1 = (String) metadata.get("firstname1"); String middlename1 = (String) metadata.get("middlename1"); String lastname1 = (String) metadata.get("lastname1"); String org1 = (String) metadata.get("org1"); String email1 = (String) metadata.get("email1"); String homepage1 = (String) metadata.get("homepage1"); // handle spatial coverage // String min_altitude = (String) metadata.get("min_altitude"); // String max_altitude = (String) metadata.get("max_altitude"); String hrizontal = (String) metadata.get("hrizontal"); String projection = (String) metadata.get("projection"); String coordinate = (String) metadata.get("coordinate"); // handle temporal coverage String time = (String) metadata.get("time"); String geologic_time = (String) metadata.get("geologic_time"); String begin_age = (String) metadata.get("begin_age"); String end_age = (String) metadata.get("end_age"); // handle present coverage String begin_date = (String) metadata.get("begindate"); String end_date = (String) metadata.get("enddate"); String t = time.trim(); StringTokenizer stb = !time.equals("present") ? null : new StringTokenizer(begin_date, "/"); int bm = !time.equals("present") ? 0 : Integer.parseInt(stb.nextToken()); int bd = !time.equals("present") ? 0 : Integer.parseInt(stb.nextToken()); int by = !time.equals("present") ? 0 : Integer.parseInt(stb.nextToken()); StringTokenizer ste = !t.equals("present") ? null : new StringTokenizer(end_date, "/"); int em; if (!t.equals("present")) { em = 0; } else { em = Integer.parseInt(ste.nextToken()); } int ed; if (!t.equals("present")) { ed = 0; } else { ed = Integer.parseInt(ste.nextToken()); } int ey; if (!t.equals("present")) { ey = 0; } else { ey = Integer.parseInt(ste.nextToken()); } String begin_hour = (String) metadata.get("begin_hour"); String end_hour = (String) metadata.get("end_hour"); String begin_min = (String) metadata.get("begin_min"); String end_min = (String) metadata.get("end_min"); String begin_sec = (String) metadata.get("begin_sec"); String end_sec = (String) metadata.get("end_sec"); int bHour = Integer.parseInt(begin_hour); int bMin = Integer.parseInt(begin_min); int bSec = Integer.parseInt(begin_sec); int eHour = Integer.parseInt(end_hour); int eMin = Integer.parseInt(end_min); int eSec = Integer.parseInt(end_sec); String begin_month; String begin_day; String begin_year; String end_month; String end_day; String end_year; boolean earlier = true; if ((by < ey) || (by == ey && bm < em) || (by == ey && bm == em && bd < ed) || (by == ey && bm == em && bd == ed && bHour < eHour) || (by == ey && bm == em && bd == ed && bHour == eHour && bMin < eMin) || (by == ey && bm == em && bd == ed && bHour == eHour && bMin == eMin && bSec <= eSec)) { // begin date and time is earlier begin_month = Integer.toString(bm); begin_day = Integer.toString(bd); begin_year = Integer.toString(by); end_month = Integer.toString(em); end_day = Integer.toString(ed); end_year = Integer.toString(ey); } else { earlier = false; begin_month = Integer.toString(em); begin_day = Integer.toString(ed); begin_year = Integer.toString(ey); end_month = Integer.toString(bm); end_day = Integer.toString(bd); end_year = Integer.toString(by); String tmp = begin_hour; begin_hour = end_hour; end_hour = tmp; tmp = begin_min; begin_min = end_min; end_min = tmp; tmp = begin_sec; begin_sec = end_sec; end_sec = tmp; } String time_choice; if (by >= 0 && ey >= 0) { time_choice = "AD"; } else if (by < 0 && ey < 0) { time_choice = "BC"; } else { time_choice = "direct"; } String bc_begin_year = earlier ? Integer.toString(-by) : Integer.toString(-ey); String bc_end_year = earlier ? Integer.toString(-ey) : Integer.toString(-by); String d_begin_year = earlier ? Integer.toString(-by) : Integer.toString(-ey); String d_end_year = earlier ? Integer.toString(ey) : Integer.toString(by); try { ObjectFactory factory = new ObjectFactory(); ADNmetadataType itemRecord = (ADNmetadataType) factory .newInstance(Class.forName("org.dlese.adn.ItemRecord")); // ////////////////////////////////////////////////////////// // // // // general // // // ///////////////////////////////////////////////////////// GeneralType general = (GeneralType) factory.newInstance(Class.forName("org.dlese.adn.GeneralType")); general.setTitle(title); general.setDescription(description); general.setLanguage("en"); // subjects SubjectsType subjects = (SubjectsType) factory.newInstance(Class.forName("org.dlese.adn.SubjectsType")); general.setSubjects(subjects); subjects.getSubject().add(subjectss); // keywords if (keywords != null) { KeywordsType keywordsType = (KeywordsType) factory .newInstance(Class.forName("org.dlese.adn.KeywordsType")); general.setKeywords(keywordsType); StringTokenizer st = new StringTokenizer(keywords, ","); while (st.hasMoreTokens()) { String tmp = st.nextToken().trim(); KeywordType keyword = (KeywordType) factory .newInstance(Class.forName("org.dlese.adn.KeywordType")); keyword.setValue(tmp); keywordsType.getKeyword().add(keyword); } } // lifecycle LifecycleType lifecycle = (LifecycleType) factory .newInstance(Class.forName("org.dlese.adn.LifecycleType")); // set the first contributor ContributorsLifecycleType contributors = (ContributorsLifecycleType) factory .newInstance(Class.forName("org.dlese.adn.ContributorsLifecycleType")); lifecycle.setContributors(contributors); ContributorLifecycleType author = (ContributorLifecycleType) factory .newInstance(Class.forName("org.dlese.adn.ContributorLifecycleType")); author.setRole(role1); if (personOrOrg1.equals("Person")) { PersonType person = (PersonType) factory.newInstance(Class.forName("org.dlese.adn.PersonType")); person.setNameTitle(nametitle1); person.setNameFirst(firstname1); person.setNameMiddle(middlename1); person.setNameLast(lastname1); person.setInstName(org1); person.setEmailPrimary(email1); author.setPerson(person); contributors.getContributor().add(author); } else { OrganizationType org = (OrganizationType) factory .newInstance(Class.forName("org.dlese.adn.OrganizationType")); org.setInstName(org1); contributors.getContributor().add(org); } // ////////////////////////////////////////////////////////// // // // // metametadata // // // ///////////////////////////////////////////////////////// MetaMetadataType metaMetadata = (MetaMetadataType) factory .newInstance(Class.forName("org.dlese.adn.MetaMetadataType")); CatalogEntriesType catalogEntries = (CatalogEntriesType) factory .newInstance(Class.forName("org.dlese.adn.CatalogEntriesType")); CatalogType catalog = (CatalogType) factory.newInstance(Class.forName("org.dlese.adn.CatalogType")); catalog.setValue("shapefile"); // get unique id // UUIDGenerator ug = UUIDGenerator.getInstance(); // UUID uuid = ug.generateTimeBasedUUID(); UUIDGen uuidgen = new UUIDGen(); String uuid = uuidgen.generateUUID(); catalog.setEntry("GEON-" + uuid); catalogEntries.getCatalog().add(catalog); metaMetadata.setCatalogEntries(catalogEntries); DateInfoType dateInfo = (DateInfoType) factory.newInstance(Class.forName("org.dlese.adn.DateInfoType")); Calendar now = Calendar.getInstance(); // dateInfo.setCreated(now.get(Calendar.YEAR)+"-"+now.get(Calendar.MONTH)+"-"+now.get(Calendar.DAY_OF_MONTH)); dateInfo.setCreated(now); dateInfo.setValue("Registered"); metaMetadata.setDateInfo(dateInfo); StatusOfType statusOf = (StatusOfType) factory.newInstance(Class.forName("org.dlese.adn.StatusOfType")); statusOf.setStatus("Submitted"); statusOf.setValue("Submitted"); metaMetadata.setStatusOf(statusOf); metaMetadata.setLanguage("en"); metaMetadata.setCopyright("No"); metaMetadata.setScheme("No scheme"); TermsOfUseType termsOfUse = (TermsOfUseType) factory .newInstance(Class.forName("org.dlese.adn.TermsOfUseType")); termsOfUse.setValue("Terms of use consistent with GEON policy."); metaMetadata.setTermsOfUse(termsOfUse); // ////////////////////////////////////////////////////////// // // // // technical // // // ///////////////////////////////////////////////////////// TechnicalType technical = (TechnicalType) factory .newInstance(Class.forName("org.dlese.adn.TechnicalType")); OnlineType online = (OnlineType) factory.newInstance(Class.forName("org.dlese.adn.OnlineType")); online.setPrimaryURL("http://www.geongrid.org"); RequirementsType requirements = (RequirementsType) factory .newInstance(Class.forName("org.dlese.adn.RequirementsType")); online.setRequirements(requirements); RequirementType requirement = (RequirementType) factory .newInstance(Class.forName("org.dlese.adn.RequirementType")); requirement.setReqType("DLESE:General:No specific technical requirements"); requirements.getRequirement().add(requirement); technical.setOnline(online); // ////////////////////////////////////////////////////////// // // // // right // // // ///////////////////////////////////////////////////////// RightsType rights = (RightsType) factory.newInstance(Class.forName("org.dlese.adn.RightsType")); rights.setDescription(permission); rights.setCost("DLESE:No"); // ////////////////////////////////////////////////////////// // // // // relation // // // ///////////////////////////////////////////////////////// RelationsType relations = (RelationsType) factory .newInstance(Class.forName("org.dlese.adn.RelationsType")); // ////////////////////////////////////////////////////////// // // // // spatial coverage // // // ///////////////////////////////////////////////////////// GeospatialCoveragesType geospatialCoverages = (GeospatialCoveragesType) factory .newInstance(Class.forName("org.dlese.adn.GeospatialCoveragesType")); GeospatialCoverageType geospatialCoverage = (GeospatialCoverageType) factory .newInstance(Class.forName("org.dlese.adn.GeospatialCoverageType")); BodyType body = (BodyType) factory.newInstance(Class.forName("org.dlese.adn.BodyType")); body.setPlanet("Earth"); geospatialCoverage.setBody(body); geospatialCoverage.setGeodeticDatumGlobalOrHorz(hrizontal); ProjectionType proj = (ProjectionType) factory .newInstance(Class.forName("org.dlese.adn.ProjectionType")); proj.setType(projection); proj.setValue("Some projections here"); geospatialCoverage.setProjection(proj); CoordinateSystemType coord = (CoordinateSystemType) factory .newInstance(Class.forName("org.dlese.adn.CoordinateSystemType")); coord.setType(coordinate); coord.setValue("Some cordinate system here"); geospatialCoverage.setCoordinateSystem(coord); BoundBoxType box = (BoundBoxType) factory.newInstance(Class.forName("org.dlese.adn.BoundBoxType")); box.setBbSrcName("Cataloger supplied"); /* * VertType vert = * (VertType)factory.newInstance(Class.forName("org.dlese.adn.VertType" * )); VertMinMaxType min = * (VertMinMaxType)factory.newInstance(Class * .forName("org.dlese.adn.VertMinMaxType")); * min.setUnits("centimeters (cm)"); min.setValue(new * BigDecimal(min_altitude[0])); * * VertMinMaxType max = * (VertMinMaxType)factory.newInstance(Class.forName * ("org.dlese.adn.VertMinMaxType")); * max.setUnits("centimeters (cm)"); max.setValue(new * BigDecimal(max_altitude[0])); * * vert.setVertMin(min); vert.setVertMax(max); * vert.setGeodeticDatumGlobalOrVert("DLESE:CGD28-CDN"); * vert.setVertBase("Datum level"); * * box.setBbVert(vert); */ geospatialCoverage.setBoundBox(box); // geospatialCoverage.setDetGeos(); geospatialCoverages.getGeospatialCoverage().add(geospatialCoverage); // ////////////////////////////////////////////////////////// // // // // temporal coverage // // // ///////////////////////////////////////////////////////// TemporalCoveragesType temporalCoverages = (TemporalCoveragesType) factory .newInstance(Class.forName("org.dlese.adn.TemporalCoveragesType")); TimeAndPeriodType timeAndPeriod = (TimeAndPeriodType) factory .newInstance(Class.forName("org.dlese.adn.TimeAndPeriodType")); temporalCoverages.getTimeAndPeriod().add(timeAndPeriod); // set time directly into relativeTime TimeInfoType timeInfo = (TimeInfoType) factory.newInstance(Class.forName("org.dlese.adn.TimeInfoType")); timeAndPeriod.setTimeInfo(timeInfo); if (time.equals("notpresent")) { if (geologic_time.equals("other")) { TimeRelativeType timeRelative = (TimeRelativeType) factory .newInstance(Class.forName("org.dlese.adn.TimeRelativeType")); timeInfo.setTimeRelative(timeRelative); RelativeType begin = (RelativeType) factory .newInstance(Class.forName("org.dlese.adn.RelativeType")); timeRelative.setBegin(begin); begin.setValue(new BigDecimal(begin_age)); begin.setUnits("ma"); RelativeType end = (RelativeType) factory .newInstance(Class.forName("org.dlese.adn.RelativeType")); timeRelative.setEnd(end); end.setValue(new BigDecimal(end_age)); end.setUnits("ma"); } else { TimeRelativeType timeRelative = (TimeRelativeType) factory .newInstance(Class.forName("org.dlese.adn.TimeRelativeType")); timeInfo.setTimeRelative(timeRelative); RelativeType begin = (RelativeType) factory .newInstance(Class.forName("org.dlese.adn.RelativeType")); timeRelative.setBegin(begin); begin.setValue(new BigDecimal(0)); begin.setUnits("ma"); RelativeType end = (RelativeType) factory .newInstance(Class.forName("org.dlese.adn.RelativeType")); timeRelative.setEnd(end); end.setValue(new BigDecimal(0)); end.setUnits("ma"); // set time to periods PeriodsType periods = (PeriodsType) factory .newInstance(Class.forName("org.dlese.adn.PeriodsType")); timeAndPeriod.setPeriods(periods); PeriodType period = (PeriodType) factory.newInstance(Class.forName("org.dlese.adn.PeriodType")); periods.getPeriod().add(period); period.setName(geologic_time); period.setSource("USGS-Geologic-Time-Scale"); } } else if (time.equals("present")) { // set time directly into timeAD or timeBC if (time_choice.equals("AD")) { TimeADType timeAD = (TimeADType) factory.newInstance(Class.forName("org.dlese.adn.TimeADType")); timeInfo.setTimeAD(timeAD); Calendar begin = Calendar.getInstance(); begin.clear(); begin.add(Calendar.YEAR, Integer.parseInt(begin_year) - 1970); begin.add(Calendar.MONTH, Integer.parseInt(begin_month) - 1); begin.add(Calendar.DAY_OF_MONTH, Integer.parseInt(begin_day) - 1); Calendar bt = Calendar.getInstance(); bt.clear(); bt.add(Calendar.HOUR, Integer.parseInt(begin_hour)); bt.add(Calendar.MINUTE, Integer.parseInt(begin_min)); bt.add(Calendar.SECOND, Integer.parseInt(begin_sec)); Calendar end = Calendar.getInstance(); end.clear(); end.add(Calendar.YEAR, Integer.parseInt(end_year) - 1970); end.add(Calendar.MONTH, Integer.parseInt(end_month) - 1); end.add(Calendar.DAY_OF_MONTH, Integer.parseInt(end_day) - 1); Calendar et = Calendar.getInstance(); et.clear(); et.add(Calendar.HOUR, Integer.parseInt(end_hour)); et.add(Calendar.MINUTE, Integer.parseInt(end_min)); et.add(Calendar.SECOND, Integer.parseInt(end_sec)); ADType tmp = (ADType) factory.newInstance(Class.forName("org.dlese.adn.ADType")); tmp.setDate(begin); tmp.setTime(bt); tmp.setValue(""); timeAD.setBegin(tmp); tmp = (ADType) factory.newInstance(Class.forName("org.dlese.adn.ADType")); tmp.setDate(end); tmp.setTime(et); tmp.setValue(""); timeAD.setEnd(tmp); } else if (time_choice.equals("BC")) { TimeBCType timeBC = (TimeBCType) factory.newInstance(Class.forName("org.dlese.adn.TimeBCType")); timeInfo.setTimeBC(timeBC); timeBC.setBegin(bc_begin_year); timeBC.setEnd(bc_end_year); } else if (time_choice.equals("direct")) { TimeRelativeType timeRelative = (TimeRelativeType) factory .newInstance(Class.forName("org.dlese.adn.TimeRelativeType")); timeInfo.setTimeRelative(timeRelative); RelativeType begin = (RelativeType) factory .newInstance(Class.forName("org.dlese.adn.RelativeType")); timeRelative.setBegin(begin); begin.setValue(new BigDecimal("-" + d_begin_year)); begin.setUnits("year"); RelativeType end = (RelativeType) factory .newInstance(Class.forName("org.dlese.adn.RelativeType")); timeRelative.setEnd(end); end.setValue(new BigDecimal(d_end_year)); end.setUnits("year"); } } // handle object in space ObjectsInSpaceType objectsInSpace = (ObjectsInSpaceType) factory .newInstance(Class.forName("org.dlese.adn.ObjectsInSpaceType")); itemRecord.setGeneral(general); itemRecord.setLifecycle(lifecycle); itemRecord.setMetaMetadata(metaMetadata); itemRecord.setRights(rights); itemRecord.setTechnical(technical); // itemRecord.setRelations(relations); itemRecord.setGeospatialCoverages(geospatialCoverages); if (!time.equals("any")) { itemRecord.setTemporalCoverages(temporalCoverages); } itemRecord.setObjectsInSpace(objectsInSpace); // marshall JAXBContext jc = JAXBContext.newInstance("org.dlese.adn"); Marshaller m = jc.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // create and save target // save into a directory File dir = new File("adn/" + uuid); // TODO: remove adn folder once // all the files have been // removed. dir.mkdirs(); dirPath = dir.getAbsolutePath(); // unzip the uploaded file String shpFile = shpURL; String unzipFileName = ""; if (shpFile.trim().startsWith("http://")) { URL shpURL = new URL(shpFile); HttpURLConnection huc = (HttpURLConnection) shpURL.openConnection(); huc.connect(); InputStream in = huc.getInputStream(); File zip = new File(dir, "tmp.zip"); FileOutputStream out = new FileOutputStream(zip); byte[] buffer = new byte[1024]; int count = in.read(buffer); while (count > 0) { out.write(buffer, 0, count); count = in.read(buffer); } huc.disconnect(); out.close(); unzipFileName = unzip(dir, zip); // Unzipping the ftpped file to // dir. zip.delete(); // the zip file is no longer necessary. } else if (shpFile.trim().startsWith("ftp://")) { shpFile = shpFile.substring(6); String username = "anonymous"; String password = "geon@geongrid.org"; int index = shpFile.indexOf("/"); String hostname = shpFile.substring(0, index); String filename = shpFile.substring(index); org.apache.commons.net.ftp.FTPClient f = new org.apache.commons.net.ftp.FTPClient(); f.connect(hostname); f.login(username, password); f.setFileType(FTP.BINARY_FILE_TYPE); File zip = new File(dir, "tmp.zip"); FileOutputStream fos = new FileOutputStream(zip); f.retrieveFile(filename, fos); f.disconnect(); fos.close(); unzipFileName = unzip(dir, zip); // Unzipping the ftpped file to // dir. zip.delete(); // the zip file is no longer necessary. } else { // file is local.. java.io.File zip = new java.io.File(shpFile); unzipFileName = unzip(dir, zip); } if (!unzipFileName.equals("")) { // calculate the binding box and set the adn schema shpfis = new FileInputStream(dirPath + "/" + unzipFileName + ".shp"); Shapefile shape = new Shapefile(shpfis); double[] bounds = shape.getBounds(); box.setWestCoord(new BigDecimal(bounds[0])); box.setNorthCoord(new BigDecimal(bounds[1])); box.setEastCoord(new BigDecimal(bounds[2])); box.setSouthCoord(new BigDecimal(bounds[3])); shpfis.close(); // Object x = (Object) shape; // shape = new Shapefile(); /* * File shp = new File(dir, unzipFileName + ".shp"); File shx = * new File(dir, unzipFileName + ".shx"); File dbf = new * File(dir, unzipFileName + ".dbf"); * * * shp.delete(); shx.delete(); dbf.delete(); //dir.delete(); */ } /* * // calculate the schema and ask for more explanation DBase db = * new DBase(dirName); db.openTable(fileName); String [] columns = * db.getColumnNames(); ArrayList list = new ArrayList(); for (int * i=0; i<columns.length; i++) { list.add(columns[i]); } */// save its metadata File adn = new File(dir, uuid + ".adn"); FileOutputStream fos = new FileOutputStream(adn); m.marshal(itemRecord, fos); fos.close(); /* * } catch (Exception e) { * * try { PrintWriter pw = new PrintWriter(new * FileWriter("/home/jaeger/log.txt", true)); e.printStackTrace(pw); * pw.flush(); } catch (Exception ex) {} * * throw new JspException(e.getMessage()); } return SKIP_BODY; } * * * * private String label(String string) { return * "<table width=90% cellpadding=1 cellspacing=0 border=0>\n"+ * "<tr><td bgcolor=Gainsboro>\n"+ * "<font face=\"arial,sans-serif\" size=-1 color=#777777>\n"+ * " <b>"+string+"</b>\n"+ "</font>\n"+ "</td></tr>\n"+ * "</table>\n"; } * * * private String message(String key, String val) { return * " <tr>\n" + * " <td align=right width=150><div class=label><b>" * +key+":</b></div></td>\n" + * " <td align=left>"+val+"</td>\n" + " </tr>\n"; } * * * private String messagePadding(String key, String val) { return * " <tr>\n" + * " <td align=right width=150><div class=label> " * +key+":</div></td>\n" + " <td align=left>"+val+"</td>\n" + * " </tr>\n"; } */ return adn.getAbsolutePath(); } catch (ClassNotFoundException cnfex) { cnfex.printStackTrace(); _deleteFiles(); } catch (JAXBException jex) { jex.printStackTrace(); _deleteFiles(); } catch (FileNotFoundException fnex) { fnex.printStackTrace(); _deleteFiles(); } catch (IOException ioex) { ioex.printStackTrace(); _deleteFiles(); } catch (ShapefileException shex) { shex.printStackTrace(); _deleteFiles(); } catch (Exception ex) { ex.printStackTrace(); _deleteFiles(); } return ""; }
From source file:org.grouter.core.readers.FtpReaderJob.java
@Override protected List<CommandMessage> readFromSource() { logger.info("Reading files from :" + node.getInBound().getUri()); // a list of full paths on ftp server we will download from Map endPointContext = node.getInBound().getEndPointContext(); List<String> remoteFtpUriToFile = getPathIncludingFile((String) endPointContext.get(FILE_LIST)); List<CommandMessage> commandMessages = new ArrayList<CommandMessage>(); FTPClient client = null; try {// ww w .jav a2 s . c om client = initConnection(); for (String fullPathToFile : remoteFtpUriToFile) { // should only return one file - since we are using a complete file uri and not a uri to a folder FTPFile[] ftpFilesAtPath = client.listFiles(fullPathToFile); if (ftpFilesAtPath.length > 0) { //String localFileName = fullPathToFile; File internalInFile = new File(node.getRouter().getHomePath() + File.separator + "nodes" + File.separator + node.getId() + File.separator + "internal" + File.separator + "in" + File.separator + fullPathToFile.replace("/", "_")); FileOutputStream fos = new FileOutputStream(internalInFile); logger.info("Downloading file from ftp server:" + fullPathToFile); // we have a valid fullPathToFile and there is a file at that fullPathToFile boolean status = client.retrieveFile(fullPathToFile, fos); if (status) { logger.info("Downloading complete :" + internalInFile); internalInFile.setLastModified(ftpFilesAtPath[0].getTimestamp().getTimeInMillis()); // Get part of the message to store for querying purposes String message = getMessage(internalInFile); CommandMessage cmdMessage = new CommandMessage(message, internalInFile); commandMessages.add(cmdMessage); } else { logger.error("Failed to download remote file :" + fullPathToFile + " Status code received :" + status); } fos.close(); } } } catch (Exception e) { // TODO We need to reset state if we start working again node.setNodeStatus(NodeStatus.ERROR); node.setStatusMessage( "Failed reading files from :" + node.getInBound().getUri() + " Error:" + e.getMessage()); logStrategy.log(node); logger.warn("Connection problem with FTP server.", e); } finally { if (client != null) { try { client.logout(); client.disconnect(); } catch (IOException e) { //ignore } } } return commandMessages; }
From source file:org.jnode.protocol.ftp.FTPURLConnection.java
/** * @see java.net.URLConnection#getInputStream() *//* www . j av a 2s . co m*/ public InputStream getInputStream() throws IOException { FTPClient client = new FTPClient(); client.connect(host); String replyString = client.getReplyString(); int replyCode = client.getReplyCode(); if (!FTPReply.isPositiveCompletion(replyCode)) { client.disconnect(); throw new IOException(replyString); } if (!client.login(username, password)) { replyString = client.getReplyString(); client.logout(); throw new IOException(replyString); } client.setFileType(FTP.BINARY_FILE_TYPE); client.enterLocalPassiveMode(); final ByteArrayOutputStream os = new ByteArrayOutputStream(); try { client.retrieveFile(path, os); client.logout(); } finally { client.disconnect(); } return new ByteArrayInputStream(os.toByteArray()); }
From source file:org.mockftpserver.stub.example.RemoteFile.java
public String readFile(String filename) throws SocketException, IOException { FTPClient ftpClient = new FTPClient(); ftpClient.connect(server, port);/* www.j a v a 2s. c o m*/ ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); boolean success = ftpClient.retrieveFile(filename, outputStream); ftpClient.disconnect(); if (!success) { throw new IOException("Retrieve file failed: " + filename); } return outputStream.toString(); }
From source file:org.moxie.ftp.FTPTaskMirrorImpl.java
/** * Retrieve a single file from the remote host. <code>filename</code> may * contain a relative path specification. <p> * * The file will then be retreived using the entire relative path spec - * no attempt is made to change directories. It is anticipated that this * may eventually cause problems with some FTP servers, but it simplifies * the coding.</p>/*from www . ja va 2 s .co m*/ * @param ftp the ftp client * @param dir local base directory to which the file should go back * @param filename relative path of the file based upon the ftp remote directory * and/or the local base directory (dir) * @throws IOException in unknown circumstances * @throws BuildException if skipFailedTransfers is false * and the file cannot be retrieved. */ protected void getFile(FTPClient ftp, String dir, String filename) throws IOException, BuildException { OutputStream outstream = null; try { File file = task.getProject().resolveFile(new File(dir, filename).getPath()); if (task.isNewer() && isUpToDate(ftp, file, resolveFile(filename))) { return; } if (task.isVerbose()) { task.log("transferring " + filename + " to " + file.getAbsolutePath()); } File pdir = file.getParentFile(); if (!pdir.exists()) { pdir.mkdirs(); } outstream = new BufferedOutputStream(new FileOutputStream(file)); ftp.retrieveFile(resolveFile(filename), outstream); if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { String s = "could not get file: " + ftp.getReplyString(); if (task.isSkipFailedTransfers()) { task.log(s, Project.MSG_WARN); skipped++; } else { throw new BuildException(s); } } else { task.log("File " + file.getAbsolutePath() + " copied from " + task.getServer(), Project.MSG_VERBOSE); transferred++; if (task.isPreserveLastModified()) { outstream.close(); outstream = null; FTPFile[] remote = ftp.listFiles(resolveFile(filename)); if (remote.length > 0) { FILE_UTILS.setFileLastModified(file, remote[0].getTimestamp().getTime().getTime()); } } } } finally { if (outstream != null) { try { outstream.close(); } catch (IOException ex) { // ignore it } } } }
From source file:org.mule.modules.FtpUtils.java
public static InputStream getFileStream(FTPClient client, String filePath, String fileName) { try {// w w w .j a v a2s . c o m if (filePath == null || filePath.isEmpty()) { filePath = client.printWorkingDirectory(); } String fullPath = createFullPath(filePath, fileName); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); if (fileExists(client, filePath, fileName)) { client.retrieveFile(fullPath, outStream); return new ByteArrayInputStream(outStream.toByteArray()); } else { throw new FtpLiteException("File does not exist"); } } catch (IOException e) { disconnect(client); throw new FtpLiteException("Error retrieving file stream from SFTP"); } }