How to make a connection using Proxy in java

This Post will explain you, What is Proxy and  How to connect to a Proxy using a java program. A full example with detailed explanation ensures you to get a complete idea of the proxy concept.

Sometimes we may need to connect to an URL or some resource from your application or java program via a proxy. Before showing you the code first let me explain you what is proxy? It’s purpose and how to use it?

What is a Proxy Server?

Proxy is an intermediate server which connects some set of machines and when one of those machines makes a request, proxy handles that request and sends its IP Address instead of actual machines IP.  This ensures

1. Faster response because the request would have already made my some other machine and so it may remain in cache. Some proxy servers also connects with memcached servers for faster response times.

2.  Administrator can monitor and filter the requests going outside to non intended websites and also he can restricts them.

3. Anonymous and hence more secure obviously.

Proxy Server

 

Full Example of proxy connection in java

ProxyConnections.java


package com.developprojects.javasnippets;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;

public class ProxyConnections {

public static void main(String args[]) {
try {
URL url = new URL(
"http://developprojects.com/wp-content/uploads/2013/12/logo_developProjects.png");
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(
"proxy.Test.com", 4327));
URLConnection connection = url.openConnection(proxy);
} catch (MalformedURLException exception) {
exception.printStackTrace();
} catch (IOException exception) {
exception.printStackTrace();
}

}

}

References:

https://www.whatismyip.com/what-is-a-proxy/

 

Encryption and Decryption using AES algorithm in Java

AESUtility.java

package com.americanexpress.gpzn.services.processservice.galaxy.v1.util;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class AESEncryptionDecryption {

 private static final String CLASS_NAME = "AESEncryptionDecryption";
 // 16 bytes or 128 bit Cipher Key..
 private static final String CIPHER_KEY = "054cbdad4808e3de";
 private static final String AES_ENCRYPTION = "AES";
 private static byte[] keyBytes = CIPHER_KEY.getBytes();

 public static void main(String args[]) {

 // Encrypting the Given String DevelopProjects.com using AES algorithm
 String encryptedString = getEncryptedString("DevelopProjects.com");
 System.out.println("Encrypted String generated using the AES :::"
 + encryptedString);
 // Decrypting the Encrypted String using AES algorithm
 String decryptedString = getDecryptStatus(encryptedString);
 System.out.println("Decrypted String generated using the AES :::"
 + decryptedString);
 }

 /*
 * This is the encryption method where we will be the using the Cipher key
 * to encrypt using AES Algorithm and encode using Apache Byte Code . We
 * will pass the input String appended with time stamp to Cipher to get an
 * encrypted String and we will it encode it using Apache byte.
 */
 public static String getEncryptedString(String inputString) {
 String methodName = "getEncryptedString";
 System.out.println(methodName + "***inputString::" + inputString);
 String encodedString = "";
 byte[] messageBytes = inputString.getBytes();
 SecretKeySpec secretKeySpecification = new SecretKeySpec(keyBytes,
 AES_ENCRYPTION);
 Cipher cipher;
 try {
 // Code to Encrypt
 cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
 cipher.init(Cipher.ENCRYPT_MODE, secretKeySpecification);
 byte[] encryptedBytes = cipher.doFinal(messageBytes);
 encodedString = Base64.encodeBase64URLSafeString(encryptedBytes);
 } catch (NoSuchAlgorithmException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());

 } catch (NoSuchPaddingException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (InvalidKeyException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (IllegalBlockSizeException e) {
 System.out.println("Exception::" + e.getMessage());
 } catch (BadPaddingException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 }
 return encodedString;
 }

 /*
 * This is the decryption method where we will be the using the Cipher key
 * to decrypt using AES Algorithm and decode using Apache Byte Code . We
 * will be decoding the encoded String which we will get from WEBUI and
 * decrypt the decoded String
 */
 public static String getDecryptStatus(String encryptedString) {
 String methodName = "getDecryptStatus";

 System.out.println(methodName
 + " Entry. Given encryptedString input is " + encryptedString);

 String decryptedString = "";
 SecretKeySpec secretKeySpecification = new SecretKeySpec(keyBytes,
 AES_ENCRYPTION);
 Cipher cipher;
 try {
 // Code to Decrypt
 cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
 cipher.init(Cipher.DECRYPT_MODE, secretKeySpecification);
 byte[] decodedBytes = Base64.decodeBase64(encryptedString);

 byte[] originalMessage = cipher.doFinal(decodedBytes);

 decryptedString = new String(originalMessage);

 } catch (NoSuchAlgorithmException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (NoSuchPaddingException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (InvalidKeyException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (IllegalBlockSizeException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (BadPaddingException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 } catch (NumberFormatException e) {
 System.out.println(methodName + " Exception::" + e.getMessage());
 }

 return decryptedString;
 }
}

How to copy contents of a database table to another in java

Suppose say abc is a advertising company and it allows its’ visitors to test their advertisements in test environments before making them live. We need to implement such a requirement by copying the the records of one table into the another table under 2 different databases. I have written the java code to copy contents of a database table to another.

If ever you have some requirement or need to copy a contents of a table in a database to another, you might find the below example useful. In our below example we have 2 tables CM_ADS_METADATA_TEST and CM_ADS_METADATA under 2 different schemas dptest and dplive schemas.

For just a sample, we have copied a complex table with clob data and copied a record from test to live table. We did a select query to fetch a record,copied it to the file and again read that file and inserted the record into the live table.

CopyDataIntoDifDBs.java

package com.developprojects.main;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;

import oracle.jdbc.OraclePreparedStatement;
import oracle.jdbc.OracleResultSet;
import oracle.xdb.XMLType;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;

/**
* @author Swarup Reddy
*
*/
public class CopyDataIntoDifDBs {
private static TransformerFactory transformerFactory = null;

public static void main(String[] args) throws SQLException,
IllegalArgumentException, TransformerConfigurationException,
TransformerException, IOException {

transformerFactory = TransformerFactory.newInstance();
Connection connection = null;
PreparedStatement preparedStatement = null;
OraclePreparedStatement stmt = null;
String sql = null;
ResultSet resultSet = null;
OracleResultSet orset = null;
XMLType poxml;
Document podoc;
final String clmnSprtr = ",,,";
final String rowSprtr = "###";
String contentToFile;
try {
System.out.println("Creating Connection..");
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection("jdbc:oracle:thin:@Localhost:1521:TestDB", "TestUser", "TestPassword");
System.out.println("Creating Connection Successfully");
sql = "SELECT * FROM dptest.CM_ADS_METADATA_TEST WHERE CM_TRMT_ID = 50131";
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
orset = (OracleResultSet) resultSet;
while (orset.next()) {
Long CM_TRMT_ID = orset.getLong(1);
System.out.println("CM_TRMT_ID " + CM_TRMT_ID.toString());
String ISO_ALPHA_LANG_CD = orset.getString(2).trim();
System.out.println("ISO_ALPHA_LANG_CD " + ISO_ALPHA_LANG_CD);
String MKT_CD = orset.getString(3).trim();
System.out.println("MKT_CD " + MKT_CD);
String PG_ID = orset.getString(4).trim();
System.out.println("PG_ID " + PG_ID);
poxml = XMLType.createXML(orset.getOPAQUE(5));
podoc = (Document) poxml.getDOM();
String TRMT_DTL_DA = getXMLFromDOM(podoc);
System.out.println("TRMT_DTL_DA ::" + TRMT_DTL_DA);
String PZN_DCSN_ENGINE_ABRV_NM = orset.getString(6).trim();
System.out.println("PZN_DCSN_ENGINE_ABRV_NM ::"
+ PZN_DCSN_ENGINE_ABRV_NM);
poxml = XMLType.createXML(orset.getOPAQUE(7));
podoc = (Document) poxml.getDOM();
String DCSN_ENGINE_CONV_TRMT_DA = getXMLFromDOM(podoc);
System.out.println("DCSN_ENGINE_CONV_TRMT_DA ::"
+ DCSN_ENGINE_CONV_TRMT_DA);
String LST_UPDT_USER_ID = orset.getString(8).trim();
System.out.println("LST_UPDT_USER_ID ::" + LST_UPDT_USER_ID);
Timestamp LST_UPDT_TS = orset.getTimestamp(9);
System.out.println("LST_UPDT_TS :: " + LST_UPDT_TS.toString());
contentToFile = CM_TRMT_ID.toString() + clmnSprtr
+ ISO_ALPHA_LANG_CD + clmnSprtr + MKT_CD + clmnSprtr
+ PG_ID + clmnSprtr + TRMT_DTL_DA + clmnSprtr
+ PZN_DCSN_ENGINE_ABRV_NM + clmnSprtr
+ DCSN_ENGINE_CONV_TRMT_DA + clmnSprtr
+ LST_UPDT_USER_ID + clmnSprtr + LST_UPDT_TS.toString()
+ rowSprtr;
InsertClob.writeToFile(contentToFile);
System.out.println("Content to file: \n" + contentToFile);

sql = "INSERT INTO dplive.CM_ADS_METADATA VALUES (?,?,?,?,?,?,?,?,?)";
stmt = (OraclePreparedStatement) connection
.prepareStatement(sql);
String insertData = InsertClob.readFromFile();
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("InsertString is: " + insertData);
System.out.println("");
System.out.println("");
System.out.println("");
String[] splitRows = insertData.split(rowSprtr);
System.out.println("Row value: " + splitRows[0]);
System.out.println("");
System.out.println("");
System.out.println("");
for (int i = 0; i < splitRows.length - 1; i++) {
System.out.println("splitRows.length::" + splitRows.length);
String[] splitColumns = splitRows[i].split(clmnSprtr);
System.out.println("splitColumns::" + splitColumns[0]);
stmt.setLong(1, Long.parseLong(splitColumns[0]));
stmt.setString(2, splitColumns[1]);
stmt.setString(3, splitColumns[2]);
stmt.setString(4, splitColumns[3]);

poxml = XMLType.createXML(connection, splitColumns[4]);
stmt.setObject(5, poxml);

stmt.setString(6, splitColumns[5]);

poxml = XMLType.createXML(connection, splitColumns[6]);
stmt.setObject(7, poxml);

stmt.setString(8, splitColumns[7]);
stmt.setTimestamp(9, Timestamp.valueOf(splitColumns[8]));
stmt.execute();

}
}
resultSet.close();
orset.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

}

// This method will convert a Document to String Object
public static String getXMLFromDOM(Document requestXMLDoc)
throws IllegalArgumentException, TransformerConfigurationException,
TransformerException {

if (requestXMLDoc == null) {
System.out.println("Supplied document object is null");
throw new IllegalArgumentException("Document cannot be null");
}
DOMSource source = new DOMSource(requestXMLDoc);
StreamResult result = new StreamResult(new StringWriter());
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(source, result);
String returnString = result.getWriter().toString();

return returnString;
}

public static void writeToFile(String content) throws IOException {

File file = new File("D:\\Sample Files\\offer.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();

}

public static String readFromFile() throws IOException {

File file = new File("D:\\Sample Files\\offer.txt");
if (!file.exists()) {
file.createNewFile();
}
FileReader fr = new FileReader(file.getAbsoluteFile());
BufferedReader br = new BufferedReader(fr);
StringBuffer content = new StringBuffer();
String temp = null;
int count = 0;
while ((temp = br.readLine()) != null) {
content.append(temp).append("\n");
count++;
}
System.out.println(count);
// br.reset();
fr.close();
br.close();
return content.toString();
}
}

Generated offer.txt File


50131,,,SV,,,SE,,,MYCASOA,,,<?xml version = '1.0'?>
<Treatment xmlns="http://www.americanexpress.com/galaxy/master/rule/v1/0/"><TreatmentMetadata><Attribute name="Phase">Draft</Attribute><Attribute name="ConversionTrackingId"/><Attribute name="Language">SV</Attribute><Attribute name="ReviewerEmail">Kalyan.A.Singirikonda@aexp.com</Attribute><Attribute name="Page">MYCASOA</Attribute><Attribute name="PointerValidator">https://cms.americanexpress.com/Render/docs/en/PZN/sv_SE/MYCA/TEXT/test.xml</Attribute><Attribute name="TreatmentStartDate">2014-09-03 16:00:00</Attribute><Attribute name="Notes"/><Attribute name="Priority">40</Attribute><Attribute name="Level2Description">Internal Acquisition_Cross-Sell</Attribute><Attribute name="SuppressionImpressionValue">9999</Attribute><Attribute name="Placement">TopLink</Attribute><Attribute name="ContentPointer">test</Attribute><Attribute name="Compliance">No</Attribute><Attribute name="TreatmentEndDate">2015-09-04 15:59:59</Attribute><Attribute name="RequesterEmail">Surya.P.Appisetty@aexp.com</Attribute><Attribute name="ReportingName">SESVChargeCorporateCardAcquisitionSwedenTestTrmt1234300c</Attribute><Attribute name="useDefaultOrOverrideInSuppression">Use Default</Attribute><Attribute name="Level1Description">Charge Corporate Card</Attribute><Attribute name="TargettingLevel">Customer</Attribute><Attribute name="OfferContentName">Sweden Test Trmt 1234</Attribute><Attribute name="ContentType">Text</Attribute><Attribute name="PagePlacementDimension">300c</Attribute><Attribute name="ApprovedDate"/><Attribute name="BusinessUnit">Charge</Attribute><Attribute name="ApprovedBy"/><Attribute name="Level0Description">Business Card</Attribute><Attribute name="CampaignObjective">Internal Acquisition_Cross-Sell</Attribute><Attribute name="FillerIndicator">KN</Attribute><Attribute name="Device"/><Attribute name="Weighting">99</Attribute><Attribute name="LastUpdated">2014-09-04 23:25:32</Attribute><Attribute name="Channel"/><Attribute name="CorpOnly">N</Attribute><Attribute name="TargettingType">Fixed</Attribute></TreatmentMetadata><RuleSet LogicalOperation="AND"><Rule><Expression><Category>Demographics</Category><LeftTerm TargetingLevel="Customer">PostCdZones</LeftTerm><Operator>includes</Operator><RightTerm><RightTermValue1>1234,6789</RightTermValue1></RightTerm></Expression></Rule></RuleSet></Treatment>,,,DEL,,,<?xml version = '1.0'?>
<PZNTreatment><PZNTreatmentMetaData><Treatment><Phase>Draft</Phase><ConversionTrackingId/><Language>SV</Language><Revieweremail>Kalyan.A.Singirikonda@aexp.com</Revieweremail><StartTs>2014-09-03 16:00:00</StartTs><Notes/><Priority>40</Priority><LegalApproval>No</LegalApproval><EndTs>2015-09-04 15:59:59</EndTs><Requestoremail>Surya.P.Appisetty@aexp.com</Requestoremail><ReportingName>SESVChargeCorporateCardAcquisitionSwedenTestTrmt1234300c</ReportingName><Lvl1Desc>Charge Corporate Card</Lvl1Desc><LowestTargetingLvl>Customer</LowestTargetingLvl><ContentNm>SwedenTestTrmt1234</ContentNm><ContentType>Text</ContentType><PlacementSize>300c</PlacementSize><ApprovedDate/><BusinessUnit>Charge</BusinessUnit><ApprovedBy/><Lvl0Desc>Business Card</Lvl0Desc><CampaignObjective>Internal Acquisition_Cross-Sell</CampaignObjective><FillerInd>KN</FillerInd><Device/><Weighting>99</Weighting><LastUpdated>2014-09-04 23:25:32</LastUpdated><Channel/><CorpOnly>N</CorpOnly><TargetingType>Fixed</TargetingType><DecisionEngine>DEL_SP</DecisionEngine><Client>AMEX</Client><RegionCd/><RptPageNm>MYCA SOA</RptPageNm><Lvl2Desc>Acquisition</Lvl2Desc><PlacementNm>TX300</PlacementNm><RptPlacementNm>TOPLINK</RptPlacementNm><ContentPointer>/sv_SE/MYCA/TEXT/test.xml</ContentPointer></Treatment></PZNTreatmentMetaData><PZNRuleMetaData><Rule><Targeting><CustProfile><PostCdZones><UIName>PostalCodeZones</UIName><include>1234,6789</include></PostCdZones></CustProfile></Targeting><EventCapping><MaxImpressionCt>9999</MaxImpressionCt></EventCapping><ControlGrp><Group2><Min>0</Min><Max>4</Max></Group2><Group3><Min>5</Min><Max>99</Max></Group3></ControlGrp></Rule></PZNRuleMetaData></PZNTreatment>,,,sappiset,,,2014-09-04 15:25:33.0###
Inserted Record into the Database


CM_TRMT_ID                  50131

ISO_ALPHA_LANG_CD           SV

MKT_CD                      SE

PG_ID                       MYCASOA

TRMT_DTL_DA                 <?xml version="1.0" encoding="UTF-8" standalone="yes"?><Treatment ><TreatmentMetadata><Attribute name="Phase">Draft</Attribute><Attribute name="ConversionTrackingId"></TreatmentMetadata></Treatment>

PZN_DCSN_ENGINE_ABRV_NM     DEL

DCSN_ENGINE_CONV_TRMT_DA    <PZNTreatment><PZNTreatmentMetaData><Treatment><Phase>Draft</Phase><ConversionTrackingId/><Language>SV</Language></Treatment></PZNRuleMetaData></PZNTreatment>

LST_UPDT_USER_ID             sappiset

LST_UPDT_TS                  2014-09-04 15:25:33.0

How to convert a XML file into a csv file using java?

We Used a property file to get xpath expressions of the corresponding mapped elements in XML file. 
If you got an doubt regarding property file, you can go throw my tutorial about how to read a property file.
Here I converted an XML file into a Document Object and I have used the configured Xpath Expressions in the
property file to retrieve the values from XML document.

XMLToCSVMappings.java

package com.developprojects.java;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;

public class XMLToCSVMappings {
 private static XPathFactory xPathFactory = null;
 private static DocumentBuilderFactory domFactory = null;

public static void main(String args[]) {

domFactory = DocumentBuilderFactory.newInstance();
 domFactory.setNamespaceAware(true);
 xPathFactory = XPathFactory.newInstance();
 TransformerFactory.newInstance();

ReadXML();
 }

public static void ReadXML() {
 System.out.println("In ReadXML method");
 File xmlFile = new File(
 "D:/Develop Projects Workspace/java/resources/sample.xml");
 try {
 InputStream fis = new FileInputStream(xmlFile);
 if (fis != null) {
 Document xmlDoc = getDocFromXMLString(fis);
 HashMap<String, String> propertiesKeypair = readPropertyFile();
 FileWriter writer = new FileWriter("c:\\SampleXMLtoCSVFile.csv");
 writer.append("Key");
 writer.append(',');
 writer.append("Value");
 writer.append('\n');

for (Map.Entry<String, String> entry : propertiesKeypair
 .entrySet()) {
 System.out.println("Key : " + entry.getKey()
 + "Xpath value is::"
 + getElementValue(entry.getValue(), xmlDoc));

writer.append(entry.getKey());
 writer.append(',');
 writer.append(getElementValue(entry.getValue(), xmlDoc));
 writer.append('\n');
 }
 writer.flush();
 writer.close();
 System.out
 .println("ResultMap Updated. CSV File is being generated...");
 }
 } catch (FileNotFoundException e) {
 e.printStackTrace();
 } catch (Exception e) {
 e.printStackTrace();
 }
 }

public static Document getDocFromXMLString(InputStream xml)
 throws Exception {
 DocumentBuilder builder;
 Document doc;
 try {
 builder = domFactory.newDocumentBuilder();
 doc = builder.parse(xml);
 } catch (Exception exception) {
 throw exception;
 } finally {
 }
 return doc;
 }

public static String getElementValue(final String xpathExpression,
 final Document doc) {

String textValue = null;
 try {
 XPath xpath = xPathFactory.newXPath();
 textValue = xpath.evaluate(xpathExpression, doc);
 } catch (final XPathExpressionException xpathException) {
 xpathException.printStackTrace();
 }

return textValue;
 }

public static HashMap<String, String> readPropertyFile() {
 System.out.println("In readPropertyFile method");
 Properties prop = new Properties();
 InputStream input;
 HashMap<String, String> Propvals = new HashMap<String, String>();
 try {

input = XMLToCSVMappings.class
 .getResourceAsStream("JustProperties.properties");
 System.out.println("before load");
 prop.load(input);
 System.out.println("Property File Loaded Succesfully");
 Set<String> propertyNames = prop.stringPropertyNames();
 for (String Property : propertyNames) {
 Propvals.put(Property, prop.getProperty(Property));
 }
 System.out.println("HashMap generated::" + Propvals);
 } catch (FileNotFoundException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace();
 } catch (Exception e) {
 e.printStackTrace();
 }
 return Propvals;
 }
}

sample.xml
<?xml version="1.0" encoding="UTF-8" ?>
<channel>
 <title>DEVELOP PROJECTS</title>
 <link>http://www.developprojects.com</link>
 <Authur>Swarup Reddy Kovvuri</Authur>
 <language>Java</language>
</channel>
JustProperties.properties
Author //Authur
Website //link
Language //language

Output file generated:

SampleXMLtoCSVFile.csv

Key Value
Language Java
Website http://www.developprojects.com
Author Swarup Reddy Kovvuri
http://developprojects.com/code-snippets/how-to-read-a-property-file-into-hash-map-in-java/

How to Read a Property File into Hash Map in Java

Property file is a typical plain java file with key and value pairs. It will have an extension of .properties.  Usually system level configurations or server level configuration. Each line typically refers to a configurable parameter. Format looks like key=value . Key being the Property name and value being the key’s Value. This is the simple Properties file  used in our sample program.

AuthorInfo.properties

Author=Viswa Teja Swarup Reddy
Website=www.DevelopProjects.com
Language=English

Example Program to Read a Property file in Java

package com.developprojects.java;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Properties;
import java.util.Set;

public class ReadPropertyFile {

 public static void main(String args[]) {
 readPropertyFile();
 }

 public static void readPropertyFile() {
 System.out.println("In readPropertyFile method");
 Properties prop = new Properties();
 InputStream input;
 HashMap<String, String> propvals = new HashMap<String, String>();
 try {

 input = ReadPropertyFile.class
 .getResourceAsStream("/AuthorInfo.properties");
 prop.load(input);
 System.out.println("Property File Loaded Succesfully");
 Set<String> propertyNames = prop.stringPropertyNames();
 for (String Property : propertyNames) {
 System.out.println(Property + ":" + prop.getProperty(Property));
 propvals.put(Property, prop.getProperty(Property));
 }
 System.out.println("HashMap generated::" + propvals);
 } catch (FileNotFoundException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace();
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
}

output:

In readPropertyFile method
Property File Loaded Succesfully
Language:English
Website:www.DevelopProjects.com
Author:Viswa Teja Swarup Reddy
HashMap generated::{Website=www.DevelopProjects.com, Author=Viswa Teja Swarup Reddy, Language=English}

Explanation:

Properties prop = new Properties() creates a new Properties Object.

HashMap<String, String> propvals = new HashMap<String, String>() creates a propvals HashMap Object.

readPropertyFile() is the custom function which we have written to read the property file in the class path.

The method getResourceAsStream returns an InputStream. By calling this method with class loader, it will search the resource in the class path.

Load method will read the key value pairs from the given input stream.

The rest of the program is just iterating the elements in property file.

stringPropertyNames() returns a Set containing all the property keys.

We iterated the set to get value of the corresponding key using the method, getProperty(<propertyName>).

We are just storing the key value pairs just in the same order into our HashMap.

In the next Program, I showed you how to write into a property file.

How to Create XML Document or String Object in Java Dynamically

Explanation:

This sample example will construct a XML / DOM / Document Object in java.

We will create new instance of DocumentBuilderFactory using DocumentBuilderFactory.newInstance() method. The newDocumentBuilder will create new instance of DocumentBuilder with configured parameters. The newDocument() method will create new instance of Document Object to Build a DOM Tree.Element is an interface from org.w3c.dom package which extends from Node interface. Elements represents an element from an XML document.These Elements may have attributes, Nodes. This interface provides method which can help us build, read and edit a complex Dom Tree.

This is the XML which we wish to generate dynamically using Java Document Object Model (DOM)

 

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DevelopProjects rootAttr="true">
	<FirstChild flag="1">
		This is the First Child in DevelopProjects.com
		<FirstChildNode flag="1.1">
			This is the Child Element of FirstChild
			<FirstSubChildNode flag="1.1.1">This is the Sub Child
				Element of FirstChild</FirstSubChildNode>
		</FirstChildNode>
	</FirstChild>
	<SecondChild flag="2">This is the Second Child in
		DevelopProjects.com</SecondChild>
	<ThirdChild flag="3" />
	<FourthChild flag="4" />
	<FifthChild flag="5" />
	<SixthChild flag="6" />
	<SeventhChild flag="7" />
	<EigthChild flag="8" />
	<NinethChild flag="9" />
	<TenthElement>This is how I'm 10 Now</TenthElement>
</DevelopProjects>

Sample Java Program to Create XML Object

 

package com.developprojects.java;

import java.io.StringWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class CreateXML {

/**
 * @param args
 */
 public static void main(String[] args) {
 // TODO Auto-generated method stub
 System.out.println(generateXML());
 }
 public static String generateXML(){
 System.out.println("generateXML() Entry");
 Document doc=null;
 StringWriter writer = new StringWriter();

 try {
 final String FLAG = "flag";
 DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
 DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
 doc = docBuilder.newDocument();
 Element rootElement = doc.createElement("DevelopProjects");
 doc.appendChild(rootElement);
 Attr attr = doc.createAttribute("rootAttr");
 attr.setValue("true");
 rootElement.setAttributeNode(attr);

 Element firstChildNode = doc.createElement("FirstChildNode");
 attr = doc.createAttribute(FLAG);
 attr.setValue("1.1");
 firstChildNode.setAttributeNode(attr);
 firstChildNode.appendChild(doc.createTextNode("This is the Child Element of FirstChild"));

 Element firstSubChildNode = doc.createElement("FirstSubChildNode");
 attr = doc.createAttribute(FLAG);
 attr.setValue("1.1.1");
 firstSubChildNode.setAttributeNode(attr);
 firstSubChildNode.appendChild(doc.createTextNode("This is the Sub Child Element of FirstChild"));

 Element firstChildElement = doc.createElement("FirstChild");
 attr = doc.createAttribute(FLAG);
 attr.setValue("1");
 firstChildElement.setAttributeNode(attr);
 firstChildElement.appendChild(doc.createTextNode("This is the First Child in DevelopProjects.com"));
 firstChildElement.appendChild(firstChildNode);
 firstChildNode.appendChild(firstSubChildNode);
 rootElement.appendChild(firstChildElement);

 Element secondChildElement = doc.createElement("SecondChild");
 attr = doc.createAttribute(FLAG);
 attr.setValue("2");
 secondChildElement.setAttributeNode(attr);
 secondChildElement.appendChild(doc.createTextNode("This is the Second Child in DevelopProjects.com"));
 rootElement.appendChild(secondChildElement);

 Element thirdChildElement = doc.createElement("ThirdChild");
 attr = doc.createAttribute(FLAG);
 attr.setValue("3");
 thirdChildElement.setAttributeNode(attr);
 rootElement.appendChild(thirdChildElement);

 Element fourthChildElement = doc.createElement("FourthChild");
 attr = doc.createAttribute(FLAG);
 attr.setValue("4");
 fourthChildElement.setAttributeNode(attr);
 rootElement.appendChild(fourthChildElement);

 Element fifthChildElement = doc.createElement("FifthChild");
 attr = doc.createAttribute(FLAG);
 attr.setValue("5");
 fifthChildElement.setAttributeNode(attr);
 rootElement.appendChild(fifthChildElement);

 Element sixthChildElement = doc.createElement("SixthChild");
 attr = doc.createAttribute(FLAG);
 attr.setValue("6");
 sixthChildElement.setAttributeNode(attr);
 rootElement.appendChild(sixthChildElement);

 Element seventhChildElement = doc.createElement("SeventhChild");
 attr = doc.createAttribute(FLAG);
 attr.setValue("7");
 seventhChildElement.setAttributeNode(attr);
 rootElement.appendChild(seventhChildElement);

 Element EightChildElement = doc.createElement("EigthChild");
 attr = doc.createAttribute(FLAG);
 attr.setValue("8");
 EightChildElement.setAttributeNode(attr);
 rootElement.appendChild(EightChildElement);

 Element NinethChildElement = doc.createElement("NinethChild");
 attr = doc.createAttribute(FLAG);
 attr.setValue("9");
 NinethChildElement.setAttributeNode(attr);
 rootElement.appendChild(NinethChildElement);

 Element tenthElement = doc.createElement("TenthElement");
 tenthElement.appendChild(doc.createTextNode("This is how I'm 10 Now"));
 rootElement.appendChild(tenthElement);

 TransformerFactory transformerFactory = TransformerFactory.newInstance();
 Transformer transformer = transformerFactory.newTransformer();
 DOMSource source = new DOMSource(doc);
 StreamResult result = new StreamResult(writer);
 transformer.transform(source, result);

 } catch (ParserConfigurationException pce) {
 System.out.println("Exception Occured While parsing the XML::"+pce);
 }catch (TransformerException tfe) {
 System.out.println("Exception Occured While Transforming the XML::"+tfe);
 }
 System.out.println("generateXML() Entry");
 return writer.toString();
 }

}