Example usage for org.apache.commons.net.ftp FTPClient retrieveFile

List of usage examples for org.apache.commons.net.ftp FTPClient retrieveFile

Introduction

In this page you can find the example usage for org.apache.commons.net.ftp FTPClient retrieveFile.

Prototype

public boolean retrieveFile(String remote, OutputStream local) throws IOException 

Source Link

Document

Retrieves a named file from the server and writes it to the given OutputStream.

Usage

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"+
         * "&nbsp; <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>&nbsp;&nbsp;&nbsp;"
         * +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");
    }
}