/*
* Copyright 2002-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.integration.samples.jdbc;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import org.apache.log4j.Logger;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.samples.jdbc.service.PersonService;
/**
* Starts the Spring Context and will initialize the Spring Integration routes.
*
* @author Gunnar Hillert
* @author Amol Nayak
* @version 1.0
*
*/
public final class Main {
private static final Logger LOGGER = Logger.getLogger(Main.class);
private Main() { }
/**
* Load the Spring Integration Application Context
*
* @param args - command line arguments
*/
public static void main(final String... args) {
LOGGER.info("\n========================================================="
+ "\n "
+ "\n Welcome to Spring Integration! "
+ "\n "
+ "\n For more information please visit: "
+ "\n http://www.springsource.org/spring-integration "
+ "\n "
+ "\n=========================================================" );
final AbstractApplicationContext context =
new ClassPathXmlApplicationContext("classpath:META-INF/spring/integration/*-context.xml");
context.registerShutdownHook();
final Scanner scanner = new Scanner(System.in);
final PersonService personService = context.getBean(PersonService.class);
LOGGER.info("\n========================================================="
+ "\n "
+ "\n Please press 'q + Enter' to quit the application. "
+ "\n "
+ "\n=========================================================" );
System.out.println("Please enter a choice and press <enter>: ");
System.out.println("\t1. Find person details");
System.out.println("\t2. Create a new person detail");
System.out.println("\tq. Quit the application");
System.out.print("Enter you choice: ");
while (true) {
final String input = scanner.nextLine();
if("1".equals(input.trim())) {
getPersonDetails(scanner, personService);
} else if("2".equals(input.trim())) {
createPersonDetails(scanner,personService);
} else if("q".equals(input.trim())) {
break;
} else {
System.out.println("Invalid choice\n\n");
}
System.out.println("Please enter a choice and press <enter>: ");
System.out.println("\t1. Find person details");
System.out.println("\t2. Create a new person detail");
System.out.println("\tq. Quit the application");
System.out.print("Enter you choice: ");
}
LOGGER.info("Exiting application...bye.");
System.exit(0);
}
private static void createPersonDetails(final Scanner scanner,PersonService service) {
while(true) {
System.out.print("\nEnter the Person's name:");
String name = scanner.nextLine();
Gender gender;
while(true) {
System.out.print("Enter the Person's gender(M/F):");
String genderStr = scanner.nextLine();
if("m".equalsIgnoreCase(genderStr) || "f".equalsIgnoreCase(genderStr)) {
gender = Gender.getGenderByIdentifier(genderStr.toUpperCase());
break;
}
}
Date dateOfBirth;
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
while(true) {
System.out.print("Enter the Person's Date of birth in DD/MM/YYYY format:");
String dobStr = scanner.nextLine();
try {
dateOfBirth = format.parse(dobStr);
break;
} catch (ParseException e) {
//Silently suppress and ask to enter details again
}
}
Person person = new Person();
person.setDateOfBirth(dateOfBirth);
person.setGender(gender);
person.setName(name);
person = service.createPerson(person);
System.out.println("Created person record with id: " + person.getPersonId());
System.out.print("Do you want to create another person? (y/n)");
String choice = scanner.nextLine();
if(!"y".equalsIgnoreCase(choice))
break;
}
}
/**
* @param service
* @param input
*/
private static void getPersonDetails(final Scanner scanner,final PersonService service) {
while(true) {
System.out.print("Please enter the name of the person and press<enter>: ");
String input = scanner.nextLine();
final List<Person> personList = service.findPersonByName(input);
if(personList != null && !personList.isEmpty()) {
for(Person person:personList) {
System.out.print(
String.format("Person found - Person Id: '%d', Person Name is: '%s', Gender: '%s'",
person.getPersonId(),person.getName(), person.getGender()));
System.out.println(String.format(", Date of birth: '%1$td/%1$tm/%1$tC%1$ty'", person.getDateOfBirth()));
}
} else {
System.out.println(
String.format("No Person record found for name: '%s'.", input));
}
System.out.print("Do you want to find another person? (y/n)");
String choice = scanner.nextLine();
if(!"y".equalsIgnoreCase(choice))
break;
}
}
}