I/O / Streams :: How To Parse CSV Using Runtime Configurable Bean Class In Java
Oct 30, 2014
I will detailedly explain my requirement below,. I am going to automate a manual process. I will be reading multiple CSV files from a remote location using java.There are five formats of input files are expected, each differs in their header structure. For example, Type 1 - Number, ID, Name, Phone, Address...Type 2 - Number, GID, Employee Name, Address1, Address2, Phone number and so the other three types are also differs.
The precondition is not all the files are expected for a particular run. I need to read these files one by one, validate it, log the validation error and i have to consolidate all the correct data from all the files together in a standard output format, in a single file The standard output format will be like,Number, Name, ID, Address
I need to have the above data alone in the output file and rest of the data can be ignored.What i have tried is as follows, I have created 5 bean classes representing each type's header. I just read an input, identify its type and parsed it. I parsed line by line.
public String[] parseCSV(String inputLine){
try {
String[] fields;
Pattern p =
Pattern.compile(",(?=([^"]*"[^"]*")*(?![^"]*"))");
fields = p.split(inputLine);
/*for ( int i = 0; i < fields.length; i++ ) {
System.out.println(fields[i]);
}*/
[code]...
I have validated as per the validation rules and i appended each line elements into an object. I have added all the objects in to a MAP collection. Likewise, i have created 5 beans and did the same.But, what is the change needed now is,. All the headers in all the five types of rosters are configurable items. hence, i have to change my bean classes everytime when the header structures are changed.
We have to create one single utility, which is configurable for all the five types of input files. To be very clear, if type 1 input comes with 8 columns and type 3 comes with 12 columns, the utility is able to parse it.
We are going to have a table which has the data regarding the header structure of all the five types of inputs alone. Once i read a file and identify its type, i will hit the database and read the header structure of that particular type and its column count. I will match the column count with the input file's header count and i will have to proceed creating a bean class on runtime depending upon the header structure read now. I will validate and consolidate as i did above. The requirement is, Runtime configuration of bean class, depending upon the type of input.
I want to parse a java file (i.e., I need write some code which understand the content of a given java file--> the name of this java file will be entered as input). Then, after my code understand the content of the given java file, map this java file into another target language or platform. the output from my code is the new file which can run on the target language or platform.in the current state, I want to write some code which can understand a java file and can parse its content and display it on the console.
I'm just starting out with learning how to process/parse XML data in Java, following online code/tutorials. I am currently only printing out "catalog."
package com.emp; public class salarybean { private String name; private Double days; private Double id; public String getName() { return name;
[code]...
now i want to retrieve all these values in another servlet where i want to do some calculation but not able to retrieve it is showing null and indicating for this value in my eclispe IDE " Iterator<salarybean> itr=list.iterator(); "
public class Time extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException
I will be developing a change and would like to know how can i parse a mail header in OBPM using java.
I want to get the message id, date and time the email recieved and email size.
Our code is already fetching the attachment of the email using the following syntax.
mailAttachments = mail.attachments;
I tried creating a variable like mailHeaders = mail.headers, would you know how can i get the details i want by parsing the variable? so far I wasn't able to check what mail.headers return as i'm currently having issues running our code locally due to DB connections.
I have a flat file (.txt) with contents in a predefined format. I need to parse and look for a particular content and update it. How can i achieve this using Java.
But resource.returnString(r); gives a org.apache.jasper.JasperException: java.lang.NullPointerException I started the glassfish server in debug mode and found out that "resource" was null. but @PostConstruct in singleton does print which means singleton bean exists.
Can we call singleton beans with no interface in such a way form a session bean? I actually want to acquire instance of singleton bean when a client invokes method in Client bean...
I'm new to JSP but I've to use it to grab data coming from an external site, pass data to a Bean, write data in a DB and redirect the user to another page. Follow the JSP page.
<%@page import="EJB.getResponse"%> <% long paymentID = Long.parseLong(request.getParameter("paymentid")); String responsecode = "9999"; getResponse g = new getResponse();
[Code] ....
This is the bean:
@ManagedBean @RequestScoped public class getResponse implements Serializable { private Long paymentId; private String result; private String auth;
[Code] ....
On the console I see the prints but I receive the NullPointerException
WARNING: StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException at EJB.getResponse.printData(getResponse.java:72) at org.apache.jsp.notify_jsp._jspService(notify_jsp.java from :60) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
What I want to do is to deserialize the Java object which is contained within the <Character> element. (The first four characters "aced" reveals that we are dealing with serialized content. So far so good.) I'm using this code to grab the characters within <Character> and deserialize them into a Java object:
Node characterElement = responsesElementChildren.item(0); // <Character> String characterSerialized = characterElement.getTextContent(); ByteArrayInputStream bais = new ByteArrayInputStream( characterSerialized.getBytes() ); ObjectInputStream ins = new ObjectInputStream( bais ); objects.Character retrievedCharacter = (objects.Character) ins.readObject();
However, the above operation fails and I get this exception:
java.io.StreamCorruptedException: invalid stream header: 61636564 at java.io.ObjectInputStream.readStreamHeader(Unknown Source) at java.io.ObjectInputStream.<init>(Unknown Source) at network.requests.RequestRetrieveCharacter.addResponse(RequestRetrieveCharacter.java:99) at network.GameServer.ask(GameServer.java:151) at Client.main(Client.java:43)
I cannot tell if the received serialized data is okay or not, so I really don't know if the problem is here in the deserialization or actually in the serialization (on the sending side where the Java object is serialized and packed into an XML message).
i want to list files from resources folder like this:
@ManagedBean public class galley implements Serializable { private List<String> list; @PostConstruct public void init() { list = new ArrayList<String>();
[Code] ....
but it give me a null pointer exception on fList .... The directory of resources is :
I am looking for a way to compile Java Source-Files at runtime and save them all in an executable jar; almost like an IDE would do. I know that there is the javax.tools package which provides a JavaCompiler interface and you can use ToolProvider.getSystemJavaCompiler() to get an instance of a compiler. However, this method has one important problem: it only works on machines that have the JDK installed. Not when only the JRE is installed.
I guess at this point that I need some kind of third party library that offers an implementation of a JavaCompiler. Unfortunately, this is really complicated to search for on the internet since all top listings when searching "compile java at runtime jre" do not really provide a solution to the problem.
I am writing a (somewhat) complex simulation software right now which is supposed to be used by people who have absolutely no knowledge of programming. At the same time, this software should provide the user with a certain amount of flexibility and control over the flow of the simulation.
My previous take on this problem was to build a complex system to interprete user settings from a GUI. I would basically read the GUI input, output it to some kind of own scripting syntax which I just quickly made up and have that interpreted at runtime. Then I realized, that is a silly concept and I threw it out before I got far into the developement. The much better solution I came up with is taking the input from the GUI, create java source code from it and compile it at run-time. Seems much cleaner and nicer to me; will also probably have a better performance, but thats not really an issue anyways.
I have to build a server application. My issue is that it can never shutdown/restart. But I still need to update it.After some research I learned about OSGI where I can add/remove a bundle of code while the application is running. (update to a new version)Can I use JavaWS to update my OSGI application without having to close and restart it? I'm new to OSGI/JavaWS.
While executing my application i came across with this unexpected error which i don't know why?
# # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000007fdcacd79a9, pid=4980, tid=7724 # # JRE version: Java(TM) SE Runtime Environment (7.0_45-b18) (build 1.7.0_45-b18) # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.45-b08 mixed mode windows-amd64 compressed oops) # Problematic frame: # C [ntdll.dll+0x79a9] # # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows # # If you would like to submit a bug report, please visit: [URL} ..... # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. #
We are shipping in our company the JRE bundled with the client application in order to ensure the compatibility. But when upgrading from jre6 to jre8 the size increased by 50 MB!
Is there a reliable and secure way to reduce the footprint of the JRE? Are there "light distributions" or a list of libs/files that can be safely removed?
I was having trouble running some Java programs (not my own) in Windows XP, and in the process I uninstalled and installed JRE versions 6, 7, and 8, one at a time, probably in the order 7, 8, 7, 6, 7. The program that had the original problem only worked in V6, but some other programs stopped working. I went back to V7, and those other programs still didn't work. The message was "the registry refers to a nonexistent java runtime environment installation". The only advice I could find with Web searches was to reinstall the JRE. Needless to say, that didn't work.
So I looked at the registry, and I found that there were still references to V8, which had been uninstalled. The first was
So, there is a bug in the installer(s): if you uninstall V8 and install V7, the 'CurrentVersion' isn't set correctly, with the result that the registry points to a non-existent folder. The V8 uninstallation should delete these entries, or the V7 installation should change them.
It seemed to me that the bufferSize is limited so that I can only have it less than a default one, how to increase it?
My question now is how to increase the size of buffer in order to read a larger InputStream ? BufferedInputStream() default size is private static int defaultCharBufferSize = 8192; private static int defaultExpectedLineLength = 80;
How to make it larger and working? I tried to increase the defaultCharBufferSize to 500000000 but it did not work!
I got the correct output here. But now I want to generalize my method into a utility class so that I can reuse the same method for setting response data directly to respective beans as given below:-
My question is how will I pass the bean object in my utility class?
public static Object getResponseData(String response,[b]String bean[/b]) throws Exception { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = mapper.readTree(response);
I got a project at my university , and we are working with JBoss with the free version WildFly .And also with Java EE.
Now the application is a simple game of Battle Ships or sinking ships to be honest i am not sure as to how the game is actually called.
Registering a user and saving his or her information is not hard using a Stateless java bean , to save the data in the database.
I have a Stateful java bean for every user , the bean is created on the server side after the user succeeds in logging in to the game.
This bean is used mainly for sending an invite from one user to another , to log out the user and everything else that is needed for the user.
The main problem that i encountered here is that JBoss dose not let me have a reference on my frame inside of the bean.
This makes things hard because i would need to use a Timer to ask the bean every second or so if there is an invite from someone , and i would need to save all of the invites .
This was the only thing i could think of .And also implementing the game it self , the communication between users would be complicated more so than i think its needed.
Then my professor said that i could make a service on the clients side in witch i would have a reference of the JFrame , and i could send this service to the java bean and using this service i could get access to the JFrame making things faster.
This would make things a lot easier.For the invite and for the game itself too.
My professor explained that JBoss or WildFly is based on RMI , and he said also that i would need to set up the registry on the server side .But i got lost because i was not sure as to what should i search for .
We are using an older version of WildFly not the newest but one version older , CR1 i think.
And we are also using JPA in the Dynamic web project , server .
I have a very big string that I am returning from servlet to javascript. I am using PrintWriter.
PrintWriter out = response.getWriter(); out.print(bigString);
But as the string is very big my code is not working. My browser just hangs.
Also is it possible to stream the output? i.e instead of sending entire string, can I send small part of string at a time. So that my browser will not hang. I don't want to handle streaming manually I am just looking for an IO class which will do the streaming automatically.