Solved

Java Page Break Every 3 Lines

Posted on 2009-07-15
15
326 Views
Last Modified: 2013-11-23
Right now I am doing some screen scraping of a site.  I want to be able to format the data properly in the txt file, but can't seem to get it to work.  The end result that I want is this:

text1, text2, text3
text4, text5, text6

So 3 items would be printed out, the 1st two with a comma after each, then the last one with no comma and go to the next line.

Right now my code below produces this:

text1, text2, text3, text4, text5, text6,

Any thoughts or suggestions would be appreciated!
// Output a message to the log so we know that we'll be writing the text out to a file.

session.log( "Writing data to a file." );

 

// Create a FileWriter object that we'll use to write out the text.

out = new FileWriter( "form_submitted_text.txt", true );

 

// Write out the text.

out.write( session.getVariable( "Identifier" ) );

out.write (", ");

 

// Close the file.

out.close();

Open in new window

0
Comment
Question by:bschwarting
  • 8
  • 3
  • 2
  • +1
15 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 24861274
Use a PrintWriter on your FileWriter and do out.println();
0
 
LVL 1

Author Comment

by:bschwarting
ID: 24861285
very new to java, can you give an example please CEHJ?
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 24861369
Hang on, what's the value of

>> session.getVariable( "Identifier" ) ;

?
0
 
LVL 1

Author Comment

by:bschwarting
ID: 24861384
text1
0
 
LVL 1

Author Comment

by:bschwarting
ID: 24861393
it loops through and then gets "text2", then "text3"
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 24861467
>>it loops through

What does?
0
 
LVL 5

Expert Comment

by:sno0401
ID: 24861627
How can it loop through without any sort of loop/control logic? Is there more to your code than this?
0
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 
LVL 1

Author Comment

by:bschwarting
ID: 24861792
The screen scraping software calls this small piece of code each time their is something found in interactive.
0
 
LVL 1

Author Comment

by:bschwarting
ID: 24861815
Sorry, when found in identifier
0
 
LVL 5

Expert Comment

by:sno0401
ID: 24862180
Not having the screen scraping software it is difficult to give an absolute answer but here is something i've written up to give you an idea of a way to go about it.
By dividing by 3 and getting the remainder, you are able to decide which way to print the word, whether it is followd by a comma or followed by no comma but a new line instead.
Hope this helps.
public class Lister {
 

	public static void main(String[] args) {

		String[] words = {"text1", "text2", "text3", "text4", "text5", "text6"};

        int size = words.length;
 

        for (int x = 0; size > x; x++)

        {

            String currentWord = words[x];
 

            int y = x % 3;

            if (y == 0 || y == 1) {

                System.out.print(currentWord +", ");

            } else {

                System.out.println(currentWord);

            }

        }

    }

}

Open in new window

0
 
LVL 3

Accepted Solution

by:
SordSord earned 500 total points
ID: 24862205
You can add another variable to the session object to keep track of the times your function has been called.

Also, depending on how the rest of your code is structured, there may be much easier ways of doing the same thing.
session.log( "Writing data to a file." );

out = new FileWriter( "form_submitted_text.txt", true );

out.write( session.getVariable( "Identifier" ) );
 

// get or create WriteCount

Integer writecount = session.getVariable("WriteCount");

if (writecount == null) {

  writecount = new Integer(0);

}
 

// increment WriteCount

writecount = new Integer(writecount.intValue()+1);

session.putVariable("WriteCount", writecount);
 

// determine if line break or comma is needed

if (writecount.intValue()%3 == 0) {

  new PrintWriter(out).println();

} else {

  out.write (", ");

}

 

out.close();

Open in new window

0
 
LVL 1

Author Comment

by:bschwarting
ID: 24863669
sord, this looks exactly like what i need.

when i run it, i get this error:

"method putVariable not found"
0
 
LVL 1

Author Comment

by:bschwarting
ID: 24863724
The error message was: Error in method invocation: Method putVariable( java.lang.String, java.lang.Integer ) not found in class'com.screenscraper.scraper.ScrapingSession' : at Line: 13.
0
 
LVL 3

Assisted Solution

by:SordSord
SordSord earned 500 total points
ID: 24864097
Try setVariable( String identifier, Object value ) instead.
0
 
LVL 1

Author Closing Comment

by:bschwarting
ID: 31603839
pure genius!  i love EE!
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Having worked on larger scale sites, we found out that you are bound to look at more scalable solutions to integrating widgets, code snippets or complete applications and mesh them into functional sites, in any given composition. To share some of…
Boost your ability to deliver ambitious and competitive web apps by choosing the right JavaScript framework to best suit your project’s needs.
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now