<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tech Ideas - an Initiative from Gifts2DOOR.com</title>
	<atom:link href="http://techideas.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://techideas.info</link>
	<description></description>
	<lastBuildDate>Sun, 25 Sep 2011 16:22:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DTJsp</title>
		<link>http://techideas.info/2011/09/dtjsp/</link>
		<comments>http://techideas.info/2011/09/dtjsp/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 16:19:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dt]]></category>

		<guid isPermaLink="false">http://techideas.info/?p=172</guid>
		<description><![CDATA[







&#60;div id=&#8221;dtInfo&#8221; align=&#8221;center&#8221;&#62;
&#60;div id=&#8221;toppaging&#8221;&#62;&#60;/div&#62;
&#60;div id=&#8221;dt&#8221; align=&#8221;center&#8221;&#62;&#60;/div&#62;
&#60;div id=&#8221;bottompaging&#8221;&#62;&#60;/div&#62;
&#60;/div&#62;
&#60;script type=&#8221;text/javascript&#8221;&#62;
var data;
var records;
var myTable = null;
var mySource = null;
YAHOO.util.Event.onDOMReady(function (){
var callback = {
success: function(o) {
try {
data = YAHOO.lang.JSON.parse(o.responseText);
records = data.records;
displayTable();
}catch (e) {
alert(&#8220;Invalid data&#8221;);
}
},
failure: function(o){
alert(&#8220;Error occured while Processing the data&#8221;);
}
}
var sUrl = &#8216;&#60;s:url action=&#8221;getProvides&#8221; method=&#8221;populateTableProperties&#8221;/&#62;&#8217;;
var transaction = YAHOO.util.Connect.asyncRequest(&#8216;POST&#8217;, sUrl, callback, null);
});
function displayTable(){
var DataSource = YAHOO.util.DataSource,
DataTable  = YAHOO.widget.DataTable,
Paginator  = YAHOO.widget.Paginator;
mySource [...]]]></description>
			<content:encoded><![CDATA[<!--CusAds1--><p>&lt;div id=&#8221;dtInfo&#8221; align=&#8221;center&#8221;&gt;<br />
&lt;div id=&#8221;toppaging&#8221;&gt;&lt;/div&gt;<br />
&lt;div id=&#8221;dt&#8221; align=&#8221;center&#8221;&gt;&lt;/div&gt;<br />
&lt;div id=&#8221;bottompaging&#8221;&gt;&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
var data;<br />
var records;<br />
var myTable = null;<br />
var mySource = null;<br />
YAHOO.util.Event.onDOMReady(function (){<br />
var callback = {<br />
success: function(o) {<br />
try {<br />
data = YAHOO.lang.JSON.parse(o.responseText);<br />
records = data.records;<br />
displayTable();<br />
}catch (e) {<br />
alert(&#8220;Invalid data&#8221;);<br />
}<br />
},<br />
failure: function(o){<br />
alert(&#8220;Error occured while Processing the data&#8221;);<br />
}<br />
}<br />
var sUrl = &#8216;&lt;s:url action=&#8221;getProvides&#8221; method=&#8221;populateTableProperties&#8221;/&gt;&#8217;;<br />
var transaction = YAHOO.util.Connect.asyncRequest(&#8216;POST&#8217;, sUrl, callback, null);<br />
});</p>
<p>function displayTable(){<br />
var DataSource = YAHOO.util.DataSource,<br />
DataTable  = YAHOO.widget.DataTable,<br />
Paginator  = YAHOO.widget.Paginator;<br />
mySource = new DataSource(&#8216;/provider/getProvides!execute.action?&#8217;);</p>
<p>mySource.responseType   = DataSource.TYPE_JSON;<br />
mySource.responseSchema = {<br />
resultsList : &#8216;records&#8217;,<br />
fields      : data.fields,<br />
metaFields : {<br />
totalRecords: &#8216;totalRecords&#8217;<br />
}<br />
};</p>
<p>var buildQueryString = function (state,dt) {<br />
var random = Math.random();<br />
return &#8220;startIndex=&#8221; + state.pagination.recordOffset +<br />
&#8220;&amp;results=&#8221; + state.pagination.rowsPerPage+<br />
&#8220;&amp;r=&#8221;+random+<br />
&#8220;&amp;sort=&#8221;+state.sortedBy.key +<br />
&#8220;&amp;dir=&#8221; + ((state.sortedBy.dir === YAHOO.widget.DataTable.CLASS_DESC) ? &#8220;asc&#8221; : &#8220;desc&#8221;);</p>
<p>};</p>
<p>var myColumnDefs = [<br />
{"dataType":null,"editor":null,"editorOptions":{},"formatter":null,"isEditable":null,"key":"firstName","label":"First Name","sortable":true,"validator":null,"width":150},<br />
{"dataType":null,"editor":null,"editorOptions":{},"formatter":null,"isEditable":null,"key":"lastName","label":"Last Name","sortable":true,"validator":null,"width":150},<br />
{"dataType":null,"editor":null,"editorOptions":{},"formatter":null,"isEditable":null,"key":"phoneNo","label":"Phone#","sortable":true,"validator":null,"width":150},<br />
{"dataType":null,"editor":null,"editorOptions":{},"formatter":null,"isEditable":null,"key":"specialty","label":"Specialty","sortable":true,"validator":null,"width":250},<br />
{"dataType":null,"editor":null,"editorOptions":{},"formatter":null,"isEditable":null,"key":"address","label":"Address","sortable":true,"validator":null,"width":250},<br />
{"dataType":null,"editor":null,"editorOptions":{},"formatter":null,"isEditable":null,"key":"email","label":null,"sortable":null,"validator":null,"width":null},<br />
{"dataType":null,"editor":null,"editorOptions":{},"formatter":null,"isEditable":null,"key":"phId","label":null,"sortable":null,"validator":null,"width":null},<br />
{"dataType":null,"editor":null,"editorOptions":{},"formatter":null,"isEditable":null,"key":"createdDate","label":null,"sortable":null,"validator":null,"width":null}]</p>
<p>var myPaginator = new Paginator(data.paginator);<br />
var random1=Math.random();<br />
var myTableConfig = {<br />
initialRequest         : &#8217;sort=createdDate&amp;dir=desc&amp;startIndex=0&amp;results=10&amp;random1=&#8217;+random1,<br />
sortedBy                : {key:&#8221;createdDate&#8221;, dir:YAHOO.widget.DataTable.CLASS_DESC},<br />
generateRequest        : buildQueryString,<br />
paginator              : myPaginator,<br />
dynamicData            : true,<br />
scrollable               : true,<br />
width                   : &#8220;765px&#8221;<br />
};</p>
<p>myTable = new DataTable(&#8216;dt&#8217;, myColumnDefs , mySource, myTableConfig);<br />
myTable.hideColumn(&#8220;physicianId&#8221;);<br />
myTable.hideColumn(&#8220;email&#8221;);<br />
myTable.hideColumn(&#8220;createdDate&#8221;);</p>
<p>}<br />
&lt;/script&gt;</p>

<div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div>]]></content:encoded>
			<wfw:commentRss>http://techideas.info/2011/09/dtjsp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DTPgntr</title>
		<link>http://techideas.info/2011/09/dtpgntr/</link>
		<comments>http://techideas.info/2011/09/dtpgntr/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 16:05:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dt]]></category>

		<guid isPermaLink="false">http://techideas.info/?p=168</guid>
		<description><![CDATA[pubic class DTPgntr
{
private List containers;
private Integer pageLinks;
private Integer rowsPerPage;
private List rowsPerPageOptions;
private String template;
private Integer totalRecords;
private Integer initialPage = 1;
}

]]></description>
			<content:encoded><![CDATA[<!--CusAds1--><p>pubic class DTPgntr<br />
{<br />
private List<String> containers;</p>
<p>private Integer pageLinks;</p>
<p>private Integer rowsPerPage;</p>
<p>private List<Integer> rowsPerPageOptions;</p>
<p>private String template;</p>
<p>private Integer totalRecords;</p>
<p>private Integer initialPage = 1;</p>
<p>}</p>

<div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div>]]></content:encoded>
			<wfw:commentRss>http://techideas.info/2011/09/dtpgntr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SrvPgn</title>
		<link>http://techideas.info/2011/09/srvpgn/</link>
		<comments>http://techideas.info/2011/09/srvpgn/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 15:59:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dt]]></category>

		<guid isPermaLink="false">http://techideas.info/?p=165</guid>
		<description><![CDATA[public class SrvPgn
{
protected int recordsReturned = 0;
protected int totalRecords = 0;
protected int startIndex = 0;
protected List records = new ArrayList();
protected String dir = &#8220;asc&#8221;;
protected String sort = null;
protected List columnDefs = new ArrayList();
protected List fields = new ArrayList();
protected List metaFields = new ArrayList();
protected String resultsList;
protected DataTablePaginator paginator = new DataTablePaginator();
protected int maxResults = 10;
}

]]></description>
			<content:encoded><![CDATA[<!--CusAds1--><p>public class SrvPgn<br />
{</p>
<p>protected int recordsReturned = 0;</p>
<p>protected int totalRecords = 0;</p>
<p>protected int startIndex = 0;</p>
<p>protected List records = new ArrayList();</p>
<p>protected String dir = &#8220;asc&#8221;;</p>
<p>protected String sort = null;</p>
<p>protected List<DataTableColProps> columnDefs = new ArrayList<DataTableColProps>();</p>
<p>protected List<String> fields = new ArrayList<String>();</p>
<p>protected List<String> metaFields = new ArrayList<String>();</p>
<p>protected String resultsList;</p>
<p>protected DataTablePaginator paginator = new DataTablePaginator();</p>
<p>protected int maxResults = 10;</p>
<p>}</p>

<div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div>]]></content:encoded>
			<wfw:commentRss>http://techideas.info/2011/09/srvpgn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ProvideDt</title>
		<link>http://techideas.info/2011/09/providedt/</link>
		<comments>http://techideas.info/2011/09/providedt/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 15:40:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[dt]]></category>

		<guid isPermaLink="false">http://techideas.info/?p=162</guid>
		<description><![CDATA[public class ProvideDt extends SSPgn
{
private ServiceDao serviceDao;
public String execute() throws Exception
{
setTableData();
return SUCCESS;
}
public String populateTableProperties() throws Exception{
setRecordsCount();
setFieldProperties();
setPaginationProperties();
return SUCCESS;
}
private void setRecordsCount() {
Integer count = serviceDao.getProviders();
setTotalRecords(count);
}
private void setFieldProperties() {
List&#60;String&#62; filedsList = new ArrayList&#60;String&#62;();
filedsList.add(&#8220;Id&#8221;);
filedsList.add(&#8220;firstName&#8221;);
filedsList.add(&#8220;lastName&#8221;);
filedsList.add(&#8220;phoneNo&#8221;);
filedsList.add(&#8220;email&#8221;);
filedsList.add(&#8220;specialty&#8221;);
filedsList.add(&#8220;address&#8221;);
filedsList.add(&#8220;createdDate&#8221;);
setFieldProps(filedsList);
}
private void setPaginationProperties() {
DataTablePaginator pagenator = new DataTablePaginator();
pagenator.setTemplate(&#8220;&#60;strong&#62;{CurrentPageReport}&#60;/strong&#62; {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} &#60;strong&#62;Show&#60;/strong&#62; {RowsPerPageDropdown}&#8221;);
List&#60;String&#62; pagenatorContainers = new ArrayList&#60;String&#62;();
pagenatorContainers.add(&#8220;toppaging&#8221;);
pagenatorContainers.add(&#8220;bottompaging&#8221;);
pagenator.setContainers(pagenatorContainers);
pagenator.setPageLinks(5);
pagenator.setRowsPerPage(10);
List&#60;Integer&#62; noOfPageOptions = new ArrayList&#60;Integer&#62;();
noOfPageOptions.add(5);
noOfPageOptions.add(10);
noOfPageOptions.add(20);
pagenator.setRowsPerPageOptions(noOfPageOptions);
pagenator.setTotalRecords(getTotalRecords());
pagenator.setInitialPage(1);
setPaginationProps(pagenator);
}
private void setTableData() {
List [...]]]></description>
			<content:encoded><![CDATA[<!--CusAds1--><p>public class ProvideDt extends SSPgn<br />
{</p>
<p>private ServiceDao serviceDao;</p>
<p>public String execute() throws Exception<br />
{<br />
setTableData();<br />
return SUCCESS;<br />
}</p>
<p>public String populateTableProperties() throws Exception{<br />
setRecordsCount();<br />
setFieldProperties();<br />
setPaginationProperties();<br />
return SUCCESS;<br />
}</p>
<p>private void setRecordsCount() {<br />
Integer count = serviceDao.getProviders();<br />
setTotalRecords(count);<br />
}</p>
<p>private void setFieldProperties() {<br />
List&lt;String&gt; filedsList = new ArrayList&lt;String&gt;();<br />
filedsList.add(&#8220;Id&#8221;);<br />
filedsList.add(&#8220;firstName&#8221;);<br />
filedsList.add(&#8220;lastName&#8221;);<br />
filedsList.add(&#8220;phoneNo&#8221;);<br />
filedsList.add(&#8220;email&#8221;);<br />
filedsList.add(&#8220;specialty&#8221;);<br />
filedsList.add(&#8220;address&#8221;);<br />
filedsList.add(&#8220;createdDate&#8221;);<br />
setFieldProps(filedsList);<br />
}</p>
<p>private void setPaginationProperties() {<br />
DataTablePaginator pagenator = new DataTablePaginator();<br />
pagenator.setTemplate(&#8220;&lt;strong&gt;{CurrentPageReport}&lt;/strong&gt; {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} &lt;strong&gt;Show&lt;/strong&gt; {RowsPerPageDropdown}&#8221;);<br />
List&lt;String&gt; pagenatorContainers = new ArrayList&lt;String&gt;();<br />
pagenatorContainers.add(&#8220;toppaging&#8221;);<br />
pagenatorContainers.add(&#8220;bottompaging&#8221;);<br />
pagenator.setContainers(pagenatorContainers);<br />
pagenator.setPageLinks(5);<br />
pagenator.setRowsPerPage(10);<br />
List&lt;Integer&gt; noOfPageOptions = new ArrayList&lt;Integer&gt;();<br />
noOfPageOptions.add(5);<br />
noOfPageOptions.add(10);<br />
noOfPageOptions.add(20);<br />
pagenator.setRowsPerPageOptions(noOfPageOptions);<br />
pagenator.setTotalRecords(getTotalRecords());<br />
pagenator.setInitialPage(1);<br />
setPaginationProps(pagenator);<br />
}</p>
<p>private void setTableData() {<br />
List retVal = null;<br />
String results = (String) getRequest().getParameter(&#8220;results&#8221;);<br />
if (results != null) {<br />
setMaxResults(Integer.parseInt(results));<br />
}<br />
String sortColumn = getRequest().getParameter(&#8220;sort&#8221;);<br />
if (sortColumn != null) {<br />
setSort(sortColumn);<br />
} else {<br />
setSort(&#8220;createdDate&#8221;);<br />
}<br />
String order = getRequest().getParameter(&#8220;dir&#8221;);<br />
if (order != null) {<br />
setDir(order);<br />
}<br />
DetachedCriteria detCrit = DetachedCriteria<br />
.forClass(ReferredProvider.class);<br />
retVal =  getUserService().getByCriteria(detCrit, startIndex, maxResults, sort, dir);<br />
setResults(retVal);<br />
setRecordsReturned(retVal.size());<br />
setTotalRecords(retVal.size());<br />
}</p>
<p>}</p>

<div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div>]]></content:encoded>
			<wfw:commentRss>http://techideas.info/2011/09/providedt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>daoserv</title>
		<link>http://techideas.info/2011/09/daoserv/</link>
		<comments>http://techideas.info/2011/09/daoserv/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 17:27:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://techideas.info/?p=153</guid>
		<description><![CDATA[package com.sample.rmcustom.common.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.sql.DataSource;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.MappingSqlQuery;
import org.springframework.security.GrantedAuthority;
import org.springframework.security.GrantedAuthorityImpl;
import org.springframework.security.userdetails.User;
import org.springframework.security.userdetails.UserDetails;
import org.springframework.security.userdetails.UsernameNotFoundException;
import org.springframework.security.userdetails.jdbc.JdbcDaoImpl;
/**
*
* This class represents Customized UserDetailsService implementation
* &#60;li&#62;Wired in applicationContext-security.xml with bean name &#8216;userDetailsService&#8217;&#60;/li&#62;
*/
public class CustomJdbcDaoImpl extends JdbcDaoImpl {
public static final String USER_BY_USERNAME_QRY = &#8220;SELECT username,password,enabled,exp_date &#8221;
+ &#8220;FROM schema.users &#8221; + &#8220;WHERE username = ?&#8221;;
public static [...]]]></description>
			<content:encoded><![CDATA[<!--CusAds1--><p>package com.sample.rmcustom.common.dao;</p>
<p>import java.sql.ResultSet;<br />
import java.sql.SQLException;<br />
import java.sql.Types;<br />
import java.util.ArrayList;<br />
import java.util.Calendar;<br />
import java.util.HashSet;<br />
import java.util.List;<br />
import java.util.Set;</p>
<p>import javax.sql.DataSource;</p>
<p>import org.springframework.dao.DataAccessException;<br />
import org.springframework.jdbc.core.SqlParameter;<br />
import org.springframework.jdbc.object.MappingSqlQuery;<br />
import org.springframework.security.GrantedAuthority;<br />
import org.springframework.security.GrantedAuthorityImpl;<br />
import org.springframework.security.userdetails.User;<br />
import org.springframework.security.userdetails.UserDetails;<br />
import org.springframework.security.userdetails.UsernameNotFoundException;<br />
import org.springframework.security.userdetails.jdbc.JdbcDaoImpl;</p>
<p>/**<br />
*<br />
* This class represents Customized UserDetailsService implementation<br />
* &lt;li&gt;Wired in applicationContext-security.xml with bean name &#8216;userDetailsService&#8217;&lt;/li&gt;<br />
*/<br />
public class CustomJdbcDaoImpl extends JdbcDaoImpl {</p>
<p>public static final String USER_BY_USERNAME_QRY = &#8220;SELECT username,password,enabled,exp_date &#8221;<br />
+ &#8220;FROM schema.users &#8221; + &#8220;WHERE username = ?&#8221;;<br />
public static final String USER_AUTHORITIES_BY_USERNAME_QUERY =<br />
&#8220;SELECT username,authority &#8221; +<br />
&#8220;FROM schema.authorities &#8221; +<br />
&#8220;WHERE username = ?&#8221;;<br />
private String rolePrefix = &#8220;&#8221;;</p>
<p>private MappingSqlQuery usersByUsernameMappingQry;<br />
private MappingSqlQuery authoritiesByUsernameMapping;<br />
private String schema = &#8220;sample&#8221;;<br />
/**<br />
* This method is used to load user details<br />
*/<br />
@SuppressWarnings(&#8220;unchecked&#8221;)<br />
@Override<br />
public UserDetails loadUserByUsername(String username)<br />
throws UsernameNotFoundException, DataAccessException {<br />
String schemaName = &#8220;pcivok&#8221;;<br />
setSchema(schemaName);<br />
List users = loadUsersByUsername(username);</p>
<p>if (users.size() == 0) {<br />
throw new UsernameNotFoundException(messages.getMessage(<br />
&#8220;JdbcDaoImpl.notFound&#8221;, new Object[] { username },<br />
&#8220;Username {0} not found&#8221;), username);<br />
}</p>
<p>UserDetails user = (UserDetails) users.get(0); // contains no GrantedAuthority[]</p>
<p>Set dbAuthsSet = new HashSet();</p>
<p>if (getEnableAuthorities()) {<br />
dbAuthsSet.addAll(loadUserAuthorities(user.getUsername()));<br />
}</p>
<p>if (getEnableGroups()) {<br />
dbAuthsSet.addAll(loadGroupAuthorities(user.getUsername()));<br />
}</p>
<p>List dbAuths = new ArrayList(dbAuthsSet);</p>
<p>addCustomAuthorities(user.getUsername(), dbAuths);</p>
<p>if (dbAuths.size() == 0) {<br />
throw new UsernameNotFoundException(messages.getMessage(<br />
&#8220;JdbcDaoImpl.noAuthority&#8221;, new Object[] { username },<br />
&#8220;User {0} has no GrantedAuthority&#8221;), username);<br />
}</p>
<p>GrantedAuthority[] arrayAuths = (GrantedAuthority[]) dbAuths<br />
.toArray(new GrantedAuthority[dbAuths.size()]);</p>
<p>return createUserDetails(username, user, arrayAuths);<br />
}</p>
<p>/**<br />
* Executes the &lt;tt&gt;usersByUsernameMappingQry&lt;/tt&gt; and returns a list of UserDetails objects (there should normally<br />
* only be one matching user).<br />
*/<br />
protected List loadUsersByUsername(String username) {<br />
this.usersByUsernameMappingQry = new CustomQryUsersByUsernameMapping(<br />
getDataSource());<br />
return usersByUsernameMappingQry.execute(username);<br />
}</p>
<p>protected List loadUserAuthorities(String username) {<br />
this.authoritiesByUsernameMapping = new CustomAuthoritiesByUsernameMapping(getDataSource());<br />
return authoritiesByUsernameMapping.execute(username);<br />
}<br />
public static String getQuery( String qry, String schema) {</p>
<p>qry = qry.replace(&#8220;schema&#8221;, schema);<br />
return qry;<br />
}<br />
/**<br />
* Query object to look up a user.<br />
*/<br />
private class CustomQryUsersByUsernameMapping extends MappingSqlQuery {<br />
protected CustomQryUsersByUsernameMapping(DataSource ds) {<br />
super(ds, getQuery(USER_BY_USERNAME_QRY, schema));<br />
declareParameter(new SqlParameter(Types.VARCHAR));<br />
compile();<br />
}</p>
<p>protected Object mapRow(ResultSet rs, int rownum) throws SQLException {<br />
String username = rs.getString(1);<br />
String password = rs.getString(2);<br />
String enabledStr = rs.getString(3);<br />
java.sql.Date expDate = rs.getDate(4);<br />
boolean enabled = false;<br />
boolean nonExpired = false;<br />
if (enabledStr.equals(&#8220;1&#8243;)) {<br />
enabled = true;<br />
}<br />
Calendar today = Calendar.getInstance();<br />
if (expDate.after(today.getTime()))<br />
nonExpired = true;</p>
<p>UserDetails user = new User(<br />
username,<br />
password,<br />
enabled,<br />
nonExpired,<br />
true,<br />
true,<br />
new GrantedAuthority[] { new GrantedAuthorityImpl(&#8220;HOLDER&#8221;) });</p>
<p>return user;<br />
}<br />
}</p>
<p>/**<br />
* Query object to look up a user&#8217;s authorities.<br />
*/<br />
private class CustomAuthoritiesByUsernameMapping extends MappingSqlQuery {<br />
protected CustomAuthoritiesByUsernameMapping(DataSource ds) {<br />
super(ds, getQuery(USER_AUTHORITIES_BY_USERNAME_QUERY, schema));<br />
declareParameter(new SqlParameter(Types.VARCHAR));<br />
compile();<br />
}</p>
<p>protected Object mapRow(ResultSet rs, int rownum) throws SQLException {<br />
String roleName = rolePrefix + rs.getString(2);<br />
GrantedAuthorityImpl authority = new GrantedAuthorityImpl(roleName);</p>
<p>return authority;<br />
}<br />
}</p>
<p>/**<br />
* @return the schema<br />
*/<br />
public String getSchema() {<br />
return schema;<br />
}</p>
<p>/**<br />
* @param schema the schema to set<br />
*/<br />
public void setSchema(String schema) {<br />
this.schema = schema;<br />
}<br />
}</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>package com.sample.custom.common.services;</p>
<p>import java.math.BigDecimal;<br />
import java.sql.SQLException;</p>
<p>import org.hibernate.HibernateException;<br />
import org.hibernate.SQLQuery;<br />
import org.hibernate.Session;<br />
import org.hibernate.TransactionException;<br />
import org.springframework.orm.hibernate3.HibernateCallback;<br />
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;<br />
import org.springframework.transaction.PlatformTransactionManager;<br />
import org.springframework.transaction.TransactionStatus;<br />
import org.springframework.transaction.support.TransactionCallbackWithoutResult;<br />
import org.springframework.transaction.support.TransactionTemplate;</p>
<p>import com.sample.custom.bo.User;</p>
<p>public class UserDaoService extends HibernateDaoSupport {</p>
<p>PlatformTransactionManager transactionManager;</p>
<p>/**<br />
* @return transactionManager<br />
*/<br />
public PlatformTransactionManager getTransactionManager() {<br />
return transactionManager;<br />
}</p>
<p>/**<br />
* This method allows spring framework to inject transaction manager. Used<br />
* by hibernate applicationContext-security.xml file currently sets this to<br />
* org.springframework.orm.hibernate3.HibernateTransactionManager<br />
*<br />
* @param PlatformTransactionManager<br />
*            txManager<br />
*/<br />
public void setTransactionManager(PlatformTransactionManager txManager) {<br />
this.transactionManager = txManager;<br />
}</p>
<p>public Integer getnextUserId() {<br />
BigDecimal userId = (BigDecimal) getHibernateTemplate().execute(<br />
new HibernateCallback() {<br />
public Object doInHibernate(Session session)<br />
throws HibernateException, SQLException {<br />
SQLQuery q = session.createSQLQuery(&#8220;select max(USER_ID) from pcivok.USERS&#8221;);<br />
return q.uniqueResult();<br />
}<br />
});<br />
if(userId == null){<br />
return 0;<br />
}else{<br />
return userId.intValue();<br />
}<br />
}</p>
<p>public void updateUser(final User user) {<br />
TransactionTemplate txTemplate = new TransactionTemplate(<br />
getTransactionManager());<br />
try {<br />
txTemplate.execute(new TransactionCallbackWithoutResult() {<br />
public void doInTransactionWithoutResult(<br />
TransactionStatus status) {<br />
getHibernateTemplate().saveOrUpdate(user);<br />
}<br />
});<br />
} catch (TransactionException e) {<br />
throw e;<br />
}<br />
}</p>
<p>}</p>

<div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div>]]></content:encoded>
			<wfw:commentRss>http://techideas.info/2011/09/daoserv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>util2</title>
		<link>http://techideas.info/2011/09/util2/</link>
		<comments>http://techideas.info/2011/09/util2/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 17:19:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[props]]></category>

		<guid isPermaLink="false">http://techideas.info/?p=148</guid>
		<description><![CDATA[package com.sample.custom.util;
import java.io.File;
import java.io.FileInputStream;
import javax.servlet.ServletContextEvent;
import org.apache.log4j.Logger;
public class RMProperties{
private static ConfigProperties props_ = null;
private static RMProperties    this_ = null;
private static Logger log = Logger.getLogger(RMProperties.class);
static {
try {
loadProperties();
}
catch(Exception e) {
throw new ExceptionInInitializerError(e);
}
}
public void release(ServletContextEvent event)
{
log.info(&#8220;releasing Properties&#8221;);
props_ = null;
this_ = null;
}
public static ConfigProperties loadProperties()
throws RuntimeException
{
if(props_ != null) {
return(props_);
}
try {
File pfile = new File(System.getProperty(&#8220;catalina.base&#8221;),
&#8220;conf/rmcustom/RMCustom.properties&#8221;);
log.info(&#8220;loading config from [" + pfile.getAbsolutePath() + [...]]]></description>
			<content:encoded><![CDATA[<!--CusAds1--><p>package com.sample.custom.util;</p>
<p>import java.io.File;<br />
import java.io.FileInputStream;</p>
<p>import javax.servlet.ServletContextEvent;</p>
<p>import org.apache.log4j.Logger;</p>
<p>public class RMProperties{</p>
<p>private static ConfigProperties props_ = null;<br />
private static RMProperties    this_ = null;</p>
<p>private static Logger log = Logger.getLogger(RMProperties.class);</p>
<p>static {<br />
try {<br />
loadProperties();<br />
}<br />
catch(Exception e) {<br />
throw new ExceptionInInitializerError(e);<br />
}<br />
}</p>
<p>public void release(ServletContextEvent event)<br />
{<br />
log.info(&#8220;releasing Properties&#8221;);<br />
props_ = null;<br />
this_ = null;<br />
}</p>
<p>public static ConfigProperties loadProperties()<br />
throws RuntimeException<br />
{<br />
if(props_ != null) {<br />
return(props_);<br />
}<br />
try {</p>
<p>File pfile = new File(System.getProperty(&#8220;catalina.base&#8221;),<br />
&#8220;conf/rmcustom/RMCustom.properties&#8221;);</p>
<p>log.info(&#8220;loading config from [" + pfile.getAbsolutePath() + "]&#8220;);</p>
<p>ConfigProperties props = new ConfigProperties();<br />
this_ = new RMProperties();</p>
<p>FileInputStream fis = new FileInputStream(pfile);<br />
props.load(fis);<br />
fis.close();</p>
<p>/* expand propetries from self defined variables */<br />
props.expandAllProperties();<br />
/* substitute variables from system properties like ${catalina.home} etc */<br />
props.expandAllProperties(System.getProperties());</p>
<p>props_ = props;</p>
<p>} catch (Exception e) {</p>
<p>props_ = null;<br />
this_ = null;<br />
log.error(&#8220;can&#8217;t initialize config &#8220;, e);<br />
throw new RuntimeException(e);<br />
}<br />
return(props_);<br />
}<br />
public static RMProperties getConfiguration() {<br />
return(this_);<br />
}</p>
<p>public static String getProperty(String pKey) {<br />
return props_.getProperty(pKey);<br />
}<br />
public static int getIntProperty(String pKey) {<br />
return(props_.getIntProperty(pKey));<br />
}<br />
public static Object setProperty(String pKey,String pValue) {<br />
return props_.setProperty(pKey,pValue);<br />
}</p>
<p>}</p>

<div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div>]]></content:encoded>
			<wfw:commentRss>http://techideas.info/2011/09/util2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>util1</title>
		<link>http://techideas.info/2011/09/util1/</link>
		<comments>http://techideas.info/2011/09/util1/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 17:16:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[props]]></category>

		<guid isPermaLink="false">http://techideas.info/?p=145</guid>
		<description><![CDATA[package com.sample.rmcustom.util;
import java.io.StringReader;
import java.io.IOException;
import java.util.Properties;
import java.util.Enumeration;
public class ConfigProperties
extends Properties
{
private static final long serialVersionUID = 1L;
protected int expansionLevel_ = 0;
/** The maximum depth for recursive substitution
* of constants within property values
* (e.g., A=${B} .. B=${C} .. C=${D} .. etc.)
*/
private static final int MaxSubstitutionDepth = 5;
public ConfigProperties()
{
super();
}
public ConfigProperties(Properties defaults)
{
super(defaults);
}
/**
* @param level if &#60;= 0 expansion is turned [...]]]></description>
			<content:encoded><![CDATA[<!--CusAds1--><p>package com.sample.rmcustom.util;</p>
<p>import java.io.StringReader;<br />
import java.io.IOException;<br />
import java.util.Properties;<br />
import java.util.Enumeration;</p>
<p>public class ConfigProperties<br />
extends Properties<br />
{<br />
private static final long serialVersionUID = 1L;<br />
protected int expansionLevel_ = 0;</p>
<p>/** The maximum depth for recursive substitution<br />
* of constants within property values<br />
* (e.g., A=${B} .. B=${C} .. C=${D} .. etc.)<br />
*/<br />
private static final int MaxSubstitutionDepth = 5;</p>
<p>public ConfigProperties()<br />
{<br />
super();<br />
}<br />
public ConfigProperties(Properties defaults)<br />
{<br />
super(defaults);<br />
}<br />
/**<br />
* @param level if &lt;= 0 expansion is turned off<br />
* otherwise the maximum recursion depth to go<br />
*/<br />
void setExpansionDepth(int level)<br />
{<br />
if(level &lt;= 0) {<br />
level = 0;<br />
} else {<br />
if(level &gt; MaxSubstitutionDepth) {<br />
level = MaxSubstitutionDepth;<br />
}<br />
}<br />
expansionLevel_ = level;<br />
}</p>
<p>public void loadArgv(String[] argv)<br />
throws IOException<br />
{<br />
// parse arguments<br />
for(int i = 0; i &lt; argv.length; ++i) {<br />
StringReader r = new StringReader(argv[i]);<br />
load(r);<br />
}<br />
}<br />
public String getProperty(String pKey, String defaultVal)<br />
{<br />
Object o = get(pKey);<br />
if(o != null) {<br />
if(o instanceof String) {<br />
return((String)o);<br />
}<br />
return(null);<br />
} else {<br />
setProperty(pKey,defaultVal);<br />
}<br />
return(defaultVal);<br />
}<br />
public Integer getIntProperty(String pKey)<br />
{<br />
Object o = get(pKey);<br />
if(o instanceof Integer) {<br />
return((Integer)o);<br />
}<br />
String prop = (String)o;<br />
if(expansionLevel_ &gt; 0) {<br />
prop = expandProperty(this,prop,expansionLevel_);<br />
if(prop != prop) {<br />
put(pKey,prop);<br />
}<br />
}<br />
Integer i = Integer.parseInt(prop);<br />
put(pKey,i);<br />
return(i);<br />
}<br />
public Integer getIntProperty(String pKey, int defaultVal)<br />
{<br />
Object o = get(pKey);<br />
if(o instanceof Integer) {<br />
return((Integer)o);<br />
}<br />
Integer i;</p>
<p>if(o == null) {<br />
i = defaultVal;<br />
} else {<br />
String prop = (String)o;<br />
if(expansionLevel_ &gt; 0) {<br />
prop = expandProperty(this,prop,expansionLevel_);<br />
if(prop != prop) {<br />
put(pKey,prop);<br />
}<br />
}<br />
i = Integer.parseInt(prop);<br />
}<br />
return(i);<br />
}<br />
public Long getLongProperty(String pKey, long defaultVal)<br />
{<br />
Object o = get(pKey);<br />
if(o instanceof Long) {<br />
return((Long)o);<br />
}<br />
Long i;</p>
<p>if(o == null) {<br />
i = defaultVal;<br />
} else {<br />
String prop = (String)o;<br />
if(expansionLevel_ &gt; 0) {<br />
prop = expandProperty(this,prop,expansionLevel_);<br />
if(prop != prop) {<br />
put(pKey,prop);<br />
}<br />
}<br />
i = Long.parseLong(prop);<br />
}<br />
return(i);<br />
}</p>
<p>/** code for properties expansion of &#8220;${xxx} from previously set<br />
* properties.<br />
*/</p>
<p>/** The prefix and suffix for constant names<br />
* within property values */<br />
private static final String VariableStart = &#8220;${&#8220;;<br />
private static final int    VariableStartLength = 2;<br />
private static final String VariableEnd = &#8220;}&#8221;;<br />
private static final int    VariableEndLength = 1;</p>
<p>/**<br />
* expand all properties in dest from source<br />
* @param dest<br />
* @param source<br />
*/<br />
public static void expandAllProperties(Properties dest, Properties source)<br />
{<br />
Enumeration&lt;Object&gt; keys = dest.keys();</p>
<p>while(keys.hasMoreElements()) {<br />
Object o = keys.nextElement();<br />
String key = (String)o;</p>
<p>o = dest.getProperty(key);<br />
if(o instanceof String) {<br />
String val = (String)o;<br />
String result = expandProperty(source, val, 1);<br />
if(result != val) {<br />
dest.setProperty(key, result);<br />
}<br />
}<br />
}<br />
}<br />
/**<br />
* Expand all properties in this from source<br />
* @param source<br />
*/<br />
public void expandAllProperties(Properties source)<br />
{<br />
expandAllProperties(this,source);<br />
}<br />
/**<br />
* expand all properties in this from itself<br />
*/<br />
public void expandAllProperties()<br />
{<br />
expandAllProperties(this,this);<br />
}</p>
<p>/**<br />
* Searches for the property with the specified<br />
* key in this property list. If the key is not<br />
* found in this property list, the default<br />
* property list, and its defaults, recursively,<br />
* are then checked. The method returns<br />
* &lt;code&gt;null&lt;/code&gt; if the property is not found.<br />
*<br />
* @param key the property key.<br />
* @return the value in this property list with<br />
* the specified key value.<br />
*/</p>
<p>public String getExpandedProperty(String key)<br />
{<br />
return(expandProperty(this, super.getProperty(key), MaxSubstitutionDepth));<br />
}<br />
public String getExpandedProperty(Properties substFrom, String key)<br />
{<br />
return(expandProperty(substFrom, super.getProperty(key), 1));<br />
}<br />
public static String getExpandedProperty(Properties source, Properties substFrom, String key)<br />
{<br />
return(expandProperty(substFrom, source.getProperty(key), 1));<br />
}<br />
public static String expandProperty(Properties substFrom, String value)<br />
{<br />
return(expandProperty(substFrom, value, 1));<br />
}</p>
<p>/**<br />
* Searches for the property with the specified<br />
* key in this property list. If the key is not<br />
* found in this property list, the default<br />
* property list, and its defaults, recursively,<br />
* are then checked. The method returns<br />
* &lt;code&gt;null&lt;/code&gt; if the property is not found.<br />
*<br />
* &lt;p&gt;The level parameter specifies the current<br />
* level of recursive constant substitution. If<br />
* the requested property value includes a<br />
* constant, its value is substituted in place<br />
* through a recursive call to this method,<br />
* incrementing the level. Once level exceeds<br />
* MAX_SUBST_DEPTH, no further constant<br />
* substitutions are performed within the<br />
* current requested value.<br />
*<br />
* @param substFrom Properties to get &#8220;variables&#8221; from<br />
* @param me Properties to get property to expand from<br />
* @param key the property key.<br />
* @param amxlevel the maximum recursion level to go (&gt; 0)<br />
* @return the value in this property list with<br />
* the specified key value.<br />
*/<br />
private static final String expandProperty(Properties substFrom, String value, int maxlevel)<br />
{<br />
// TODO: probably should use a string buffer but likely<br />
// only called once at startup</p>
<p>done:<br />
{<br />
if (value == null) {<br />
break done;<br />
}<br />
//Get the index of the first constant, if any<br />
int beginIndex = 0;<br />
int startName = value.indexOf(VariableStart, beginIndex);</p>
<p>while (startName != -1)<br />
{<br />
if(maxlevel &lt;= 0) {<br />
//Exceeded MaxSubstitutionDepth<br />
break done;<br />
}</p>
<p>int endName = value.indexOf(VariableEnd, startName);<br />
if (endName == -1) {<br />
//Terminating symbol not found<br />
//Return the value as is<br />
break done;<br />
}</p>
<p>String constName = value.substring(startName+VariableStartLength, endName);<br />
String constValue;<br />
if(maxlevel &gt; 1) {<br />
constValue = expandProperty(substFrom, constName, maxlevel-1);<br />
} else {<br />
constValue = substFrom.getProperty(constName);<br />
}</p>
<p>if (constValue == null) {<br />
//Property name not found<br />
//Return the value as is<br />
break done;<br />
}</p>
<p>//Insert the constant value into the<br />
//original property value<br />
String newValue = (startName&gt;0)<br />
? value.substring(0, startName) : &#8220;&#8221;;<br />
newValue += constValue;</p>
<p>//Start checking for constants at this index<br />
beginIndex = newValue.length();</p>
<p>// Append the remainder of the value<br />
newValue += value.substring(endName+VariableEndLength);</p>
<p>value = newValue;</p>
<p>/* Look for the next expanded value */<br />
startName = value.indexOf(VariableStart, beginIndex);<br />
}<br />
} // done<br />
return(value);<br />
}<br />
}</p>

<div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div>]]></content:encoded>
			<wfw:commentRss>http://techideas.info/2011/09/util1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>props</title>
		<link>http://techideas.info/2011/09/props/</link>
		<comments>http://techideas.info/2011/09/props/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 17:10:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[props]]></category>

		<guid isPermaLink="false">http://techideas.info/?p=141</guid>
		<description><![CDATA[package com.sample.custom.common;
/**
*
*/
import java.util.Properties;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.sample.custom.util.RMProperties;
public class RMWebInitListener  implements ServletContextListener
{
public RMWebInitListener() {}
public void contextInitialized(ServletContextEvent event)
{
ServletContext context = event.getServletContext();
Properties props = RMProperties.loadProperties();
context.setAttribute(&#8220;rm.properties&#8221;, props);
context.setAttribute(&#8220;rm.configuration&#8221;,RMProperties.getConfiguration());
}
public void contextDestroyed(ServletContextEvent event)
{
ServletContext context = event.getServletContext();
RMProperties config = (RMProperties)context.getAttribute(&#8220;rm.configuration&#8221;);
if(config == null) {
return;
}
config.release(event);
}
}

]]></description>
			<content:encoded><![CDATA[<!--CusAds1--><p>package com.sample.custom.common;</p>
<p>/**<br />
*<br />
*/</p>
<p>import java.util.Properties;</p>
<p>import javax.servlet.ServletContext;<br />
import javax.servlet.ServletContextEvent;<br />
import javax.servlet.ServletContextListener;</p>
<p>import com.sample.custom.util.RMProperties;</p>
<p>public class RMWebInitListener  implements ServletContextListener<br />
{<br />
public RMWebInitListener() {}</p>
<p>public void contextInitialized(ServletContextEvent event)<br />
{<br />
ServletContext context = event.getServletContext();<br />
Properties props = RMProperties.loadProperties();<br />
context.setAttribute(&#8220;rm.properties&#8221;, props);<br />
context.setAttribute(&#8220;rm.configuration&#8221;,RMProperties.getConfiguration());</p>
<p>}<br />
public void contextDestroyed(ServletContextEvent event)<br />
{<br />
ServletContext context = event.getServletContext();<br />
RMProperties config = (RMProperties)context.getAttribute(&#8220;rm.configuration&#8221;);<br />
if(config == null) {<br />
return;<br />
}<br />
config.release(event);<br />
}<br />
}</p>

<div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div>]]></content:encoded>
			<wfw:commentRss>http://techideas.info/2011/09/props/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sp4</title>
		<link>http://techideas.info/2011/09/sp4/</link>
		<comments>http://techideas.info/2011/09/sp4/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 17:06:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://techideas.info/?p=139</guid>
		<description><![CDATA[package com.sample.custom.common;
import javax.servlet.http.HttpServletRequest;
import org.springframework.security.Authentication;
import org.springframework.security.GrantedAuthority;
import org.springframework.security.ui.TargetUrlResolver;
import org.springframework.security.ui.savedrequest.SavedRequest;
/**
* @author ramesh
*/
/**
* Responsible for determining target url
*/
public class CustomTargetUrlResolverImpl implements TargetUrlResolver {
private static final String ADMIN_ROLE_TARGET_URL = &#8220;/home.action&#8221;;
/**
* I determine the target url based on the {@link Authentication} and
* whether their {@link GrantedAuthority} match any of our applications
* {@link Role} &#8217;s.
*/
public String determineTargetUrl(final SavedRequest savedRequest,
final HttpServletRequest currentRequest, final [...]]]></description>
			<content:encoded><![CDATA[<!--CusAds1--><p>package com.sample.custom.common;</p>
<p>import javax.servlet.http.HttpServletRequest;</p>
<p>import org.springframework.security.Authentication;<br />
import org.springframework.security.GrantedAuthority;<br />
import org.springframework.security.ui.TargetUrlResolver;<br />
import org.springframework.security.ui.savedrequest.SavedRequest;</p>
<p>/**<br />
* @author ramesh<br />
*/<br />
/**<br />
* Responsible for determining target url<br />
*/<br />
public class CustomTargetUrlResolverImpl implements TargetUrlResolver {</p>
<p>private static final String ADMIN_ROLE_TARGET_URL = &#8220;/home.action&#8221;;</p>
<p>/**<br />
* I determine the target url based on the {@link Authentication} and<br />
* whether their {@link GrantedAuthority} match any of our applications<br />
* {@link Role} &#8217;s.<br />
*/<br />
public String determineTargetUrl(final SavedRequest savedRequest,<br />
final HttpServletRequest currentRequest, final Authentication auth) {<br />
return ADMIN_ROLE_TARGET_URL;<br />
}</p>
<p>}</p>

<div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div>]]></content:encoded>
			<wfw:commentRss>http://techideas.info/2011/09/sp4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sp3</title>
		<link>http://techideas.info/2011/09/sp3/</link>
		<comments>http://techideas.info/2011/09/sp3/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 17:03:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://techideas.info/?p=135</guid>
		<description><![CDATA[package com.sample.custom.common;
import java.sql.Types;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.SqlUpdate;
import org.springframework.security.Authentication;
import org.springframework.security.context.SecurityContextHolder;
import org.springframework.security.ui.logout.LogoutHandler;
import org.springframework.util.Assert;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.sql.DataSource;
public class CustomLogoutHandler implements LogoutHandler {
private static final String HTTP_SERVLET_REQUEST_REQUIRED = &#8220;HttpServletRequest required&#8221;;
private static final String LOGIN_HIST_UPDATE_SQL = &#8220;update schema.user_login_hist set logout_time = ? where login_hist_id = ?&#8221;;
private boolean invalidateHttpSession = true;
private DataSource dataSource;
private String schema;
/**
* This method used to perform Application Logout [...]]]></description>
			<content:encoded><![CDATA[<!--CusAds1--><p>package com.sample.custom.common;</p>
<p>import java.sql.Types;</p>
<p>import org.springframework.jdbc.core.SqlParameter;<br />
import org.springframework.jdbc.object.SqlUpdate;<br />
import org.springframework.security.Authentication;</p>
<p>import org.springframework.security.context.SecurityContextHolder;<br />
import org.springframework.security.ui.logout.LogoutHandler;<br />
import org.springframework.util.Assert;</p>
<p>import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;<br />
import javax.servlet.http.HttpSession;<br />
import javax.sql.DataSource;</p>
<p>public class CustomLogoutHandler implements LogoutHandler {</p>
<p>private static final String HTTP_SERVLET_REQUEST_REQUIRED = &#8220;HttpServletRequest required&#8221;;</p>
<p>private static final String LOGIN_HIST_UPDATE_SQL = &#8220;update schema.user_login_hist set logout_time = ? where login_hist_id = ?&#8221;;</p>
<p>private boolean invalidateHttpSession = true;</p>
<p>private DataSource dataSource;</p>
<p>private String schema;</p>
<p>/**<br />
* This method used to perform Application Logout Activity.<br />
* &lt;li&gt;Update Logout Time in USER_LOGIN_HIST table&lt;/li&gt;<br />
* &lt;li&gt;Invalidate Session&lt;/li&gt;<br />
* &lt;li&gt;Clear SecurityContextHolder&lt;/li&gt;<br />
* @param request<br />
* @param response<br />
* @param authentication<br />
*/<br />
public void logout(HttpServletRequest request,<br />
HttpServletResponse response, Authentication authentication) {<br />
Assert.notNull(request, HTTP_SERVLET_REQUEST_REQUIRED);<br />
if (invalidateHttpSession) {<br />
HttpSession session = request.getSession(false);<br />
if (session != null) {<br />
session.invalidate();<br />
}<br />
}<br />
SecurityContextHolder.clearContext();<br />
}</p>
<p>/**<br />
* Query object to look up a user&#8217;s login history.<br />
*/<br />
protected class UpdateLogoutTimeQry extends SqlUpdate {</p>
<p>public UpdateLogoutTimeQry(DataSource ds) {<br />
super(ds, getQuery(LOGIN_HIST_UPDATE_SQL,schema));<br />
setMaxRowsAffected(1);<br />
declareParameter(new SqlParameter(Types.TIMESTAMP));<br />
declareParameter(new SqlParameter(Types.INTEGER));<br />
compile();<br />
}<br />
}</p>
<p>/**<br />
* @return the invalidateHttpSession<br />
*/<br />
public boolean isInvalidateHttpSession() {<br />
return invalidateHttpSession;<br />
}</p>
<p>/**<br />
* @param invalidateHttpSession the invalidateHttpSession to set<br />
*/<br />
public void setInvalidateHttpSession(boolean invalidateHttpSession) {<br />
this.invalidateHttpSession = invalidateHttpSession;<br />
}</p>
<p>/**<br />
* @return the dataSource<br />
*/<br />
public DataSource getDataSource() {<br />
return dataSource;<br />
}</p>
<p>/**<br />
* @param dataSource the dataSource to set<br />
*/<br />
public void setDataSource(DataSource dataSource) {<br />
this.dataSource = dataSource;<br />
}</p>
<p>/**<br />
* @return the schema<br />
*/<br />
public String getSchema() {<br />
return schema;<br />
}</p>
<p>/**<br />
* @param schema the schema to set<br />
*/<br />
public void setSchema(String schema) {<br />
this.schema = schema;<br />
}</p>
<p>public static String getQuery( String qry, String schema) {</p>
<p>qry = qry.replace(&#8220;schema&#8221;, schema);<br />
return qry;<br />
}</p>
<p>}</p>

<div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div>]]></content:encoded>
			<wfw:commentRss>http://techideas.info/2011/09/sp3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

