NIFI: Generating dates between two dates using ExecuteScript processor





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I am currently trying to get list of all dates in a flowfile between the two dates specified using ExecuteScript. But I am somehow getting empty attribute.



Following is my Groovy code of ExecuteScript for the specified startdate and enddate variable specified:



flowFile = session.get();
if(!flowFile)
return;

DATE_FORMAT = 'dd-MM-yyyy';
startDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("startdate"));
endDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("enddate"));
allDates = "";

Calendar calendar = Calendar.getInstance();
Set allDates = new LinkedHashSet();
numbers = TimeUnit.MILLISECONDS.toDays(Math.abs(endDate - startDate))


for (int i = 1; i <= numbers; i++) {
calendar.setTime( startDate );
calendar.add( Calendar.DATE, i );
}

days.each {
day -> allDates = allDates + day + "n";
}

flowFile = session.putAttribute(flowFile,"allDates", allDates );
session.transfer(flowFile,REL_SUCCESS)


On my outgoing queue I find the attribute allDates is empty String



What is going wrong with my code?










share|improve this question





























    0















    I am currently trying to get list of all dates in a flowfile between the two dates specified using ExecuteScript. But I am somehow getting empty attribute.



    Following is my Groovy code of ExecuteScript for the specified startdate and enddate variable specified:



    flowFile = session.get();
    if(!flowFile)
    return;

    DATE_FORMAT = 'dd-MM-yyyy';
    startDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("startdate"));
    endDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("enddate"));
    allDates = "";

    Calendar calendar = Calendar.getInstance();
    Set allDates = new LinkedHashSet();
    numbers = TimeUnit.MILLISECONDS.toDays(Math.abs(endDate - startDate))


    for (int i = 1; i <= numbers; i++) {
    calendar.setTime( startDate );
    calendar.add( Calendar.DATE, i );
    }

    days.each {
    day -> allDates = allDates + day + "n";
    }

    flowFile = session.putAttribute(flowFile,"allDates", allDates );
    session.transfer(flowFile,REL_SUCCESS)


    On my outgoing queue I find the attribute allDates is empty String



    What is going wrong with my code?










    share|improve this question

























      0












      0








      0








      I am currently trying to get list of all dates in a flowfile between the two dates specified using ExecuteScript. But I am somehow getting empty attribute.



      Following is my Groovy code of ExecuteScript for the specified startdate and enddate variable specified:



      flowFile = session.get();
      if(!flowFile)
      return;

      DATE_FORMAT = 'dd-MM-yyyy';
      startDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("startdate"));
      endDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("enddate"));
      allDates = "";

      Calendar calendar = Calendar.getInstance();
      Set allDates = new LinkedHashSet();
      numbers = TimeUnit.MILLISECONDS.toDays(Math.abs(endDate - startDate))


      for (int i = 1; i <= numbers; i++) {
      calendar.setTime( startDate );
      calendar.add( Calendar.DATE, i );
      }

      days.each {
      day -> allDates = allDates + day + "n";
      }

      flowFile = session.putAttribute(flowFile,"allDates", allDates );
      session.transfer(flowFile,REL_SUCCESS)


      On my outgoing queue I find the attribute allDates is empty String



      What is going wrong with my code?










      share|improve this question














      I am currently trying to get list of all dates in a flowfile between the two dates specified using ExecuteScript. But I am somehow getting empty attribute.



      Following is my Groovy code of ExecuteScript for the specified startdate and enddate variable specified:



      flowFile = session.get();
      if(!flowFile)
      return;

      DATE_FORMAT = 'dd-MM-yyyy';
      startDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("startdate"));
      endDate = Date.parse(DATE_FORMAT, flowFile.getAttribute("enddate"));
      allDates = "";

      Calendar calendar = Calendar.getInstance();
      Set allDates = new LinkedHashSet();
      numbers = TimeUnit.MILLISECONDS.toDays(Math.abs(endDate - startDate))


      for (int i = 1; i <= numbers; i++) {
      calendar.setTime( startDate );
      calendar.add( Calendar.DATE, i );
      }

      days.each {
      day -> allDates = allDates + day + "n";
      }

      flowFile = session.putAttribute(flowFile,"allDates", allDates );
      session.transfer(flowFile,REL_SUCCESS)


      On my outgoing queue I find the attribute allDates is empty String



      What is going wrong with my code?







      groovy apache-nifi






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 23 '18 at 17:37









      Jasim WaheedJasim Waheed

      48115




      48115
























          1 Answer
          1






          active

          oldest

          votes


















          2














          you have some problems in your code



          for example the variable allDates declared twice i two different scopes:



          global (without type or def)



          allDates = "";


          and local (with type)



          Set allDates = new LinkedHashSet();


          after that it's hard to predict which one is used



          and actually code could be easier in groovy:



          def DATE_FORMAT = 'dd-MM-yyyy';
          def startDate = Date.parse(DATE_FORMAT, '01-11-1970');
          def endDate = Date.parse(DATE_FORMAT, '09-11-1970');
          def allDates = ""

          for (def d = startDate; d<=endDate; d++){
          allDates+=d.format(DATE_FORMAT)+"n"
          }
          println allDates


          note that this is runable code so you can use groovyconsole or any IDE to debug it before integrating into nifi



          of cause you have to wrap it with flow file handling before using in nifi






          share|improve this answer
























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53450951%2fnifi-generating-dates-between-two-dates-using-executescript-processor%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            2














            you have some problems in your code



            for example the variable allDates declared twice i two different scopes:



            global (without type or def)



            allDates = "";


            and local (with type)



            Set allDates = new LinkedHashSet();


            after that it's hard to predict which one is used



            and actually code could be easier in groovy:



            def DATE_FORMAT = 'dd-MM-yyyy';
            def startDate = Date.parse(DATE_FORMAT, '01-11-1970');
            def endDate = Date.parse(DATE_FORMAT, '09-11-1970');
            def allDates = ""

            for (def d = startDate; d<=endDate; d++){
            allDates+=d.format(DATE_FORMAT)+"n"
            }
            println allDates


            note that this is runable code so you can use groovyconsole or any IDE to debug it before integrating into nifi



            of cause you have to wrap it with flow file handling before using in nifi






            share|improve this answer




























              2














              you have some problems in your code



              for example the variable allDates declared twice i two different scopes:



              global (without type or def)



              allDates = "";


              and local (with type)



              Set allDates = new LinkedHashSet();


              after that it's hard to predict which one is used



              and actually code could be easier in groovy:



              def DATE_FORMAT = 'dd-MM-yyyy';
              def startDate = Date.parse(DATE_FORMAT, '01-11-1970');
              def endDate = Date.parse(DATE_FORMAT, '09-11-1970');
              def allDates = ""

              for (def d = startDate; d<=endDate; d++){
              allDates+=d.format(DATE_FORMAT)+"n"
              }
              println allDates


              note that this is runable code so you can use groovyconsole or any IDE to debug it before integrating into nifi



              of cause you have to wrap it with flow file handling before using in nifi






              share|improve this answer


























                2












                2








                2







                you have some problems in your code



                for example the variable allDates declared twice i two different scopes:



                global (without type or def)



                allDates = "";


                and local (with type)



                Set allDates = new LinkedHashSet();


                after that it's hard to predict which one is used



                and actually code could be easier in groovy:



                def DATE_FORMAT = 'dd-MM-yyyy';
                def startDate = Date.parse(DATE_FORMAT, '01-11-1970');
                def endDate = Date.parse(DATE_FORMAT, '09-11-1970');
                def allDates = ""

                for (def d = startDate; d<=endDate; d++){
                allDates+=d.format(DATE_FORMAT)+"n"
                }
                println allDates


                note that this is runable code so you can use groovyconsole or any IDE to debug it before integrating into nifi



                of cause you have to wrap it with flow file handling before using in nifi






                share|improve this answer













                you have some problems in your code



                for example the variable allDates declared twice i two different scopes:



                global (without type or def)



                allDates = "";


                and local (with type)



                Set allDates = new LinkedHashSet();


                after that it's hard to predict which one is used



                and actually code could be easier in groovy:



                def DATE_FORMAT = 'dd-MM-yyyy';
                def startDate = Date.parse(DATE_FORMAT, '01-11-1970');
                def endDate = Date.parse(DATE_FORMAT, '09-11-1970');
                def allDates = ""

                for (def d = startDate; d<=endDate; d++){
                allDates+=d.format(DATE_FORMAT)+"n"
                }
                println allDates


                note that this is runable code so you can use groovyconsole or any IDE to debug it before integrating into nifi



                of cause you have to wrap it with flow file handling before using in nifi







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 24 '18 at 9:58









                daggettdaggett

                9,58321631




                9,58321631
































                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53450951%2fnifi-generating-dates-between-two-dates-using-executescript-processor%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    "Incorrect syntax near the keyword 'ON'. (on update cascade, on delete cascade,)

                    Alcedinidae

                    Origin of the phrase “under your belt”?