<?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>Niki rocks</title>
	<atom:link href="http://www.nikirocks.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nikirocks.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 03 Mar 2010 16:19:54 +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>JPA &#8211; Audit</title>
		<link>http://www.nikirocks.com/blog/2010/03/jpa-audit/</link>
		<comments>http://www.nikirocks.com/blog/2010/03/jpa-audit/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 16:19:54 +0000</pubDate>
		<dc:creator>niki</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[base class]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[mappedsuperclass]]></category>

		<guid isPermaLink="false">http://www.nikirocks.com/blog/?p=26</guid>
		<description><![CDATA[In vielen Applikationen ist es üblich, dass Zusatz-Informationen zu einem persistierten Objekt gespeichert werden. Solche Zusatzinformationen sind normalerweise: Datum und Zeit des Creates oder Updates und die User, die diese Aktionen gemacht haben. Anstatt in den Service-Klassen dauernd diese Attribute zu setzen gibt es in JPA eine elegante Möglichkeit das zu erreichen.
Die zu persistierenden Objekte [...]]]></description>
			<content:encoded><![CDATA[<p>In vielen Applikationen ist es üblich, dass Zusatz-Informationen zu einem persistierten Objekt gespeichert werden. Solche Zusatzinformationen sind normalerweise: Datum und Zeit des Creates oder Updates und die User, die diese Aktionen gemacht haben. Anstatt in den Service-Klassen dauernd diese Attribute zu setzen gibt es in JPA eine elegante Möglichkeit das zu erreichen.</p>
<p>Die zu persistierenden Objekte sollten alle von einer Basisklasse abgeleitet sein. Diese Basisklasse besitzt nun die Attribute createdBy, createdAt, changedBy und changedAt. Mit den Annotations @PrePersist und @PreUpdate kann man Methoden kennzeichnen, die vor dem Anlegen bzw. updaten des Objekts in der Datenbank aufgerufen werden. Dort kann man die Zusatzinformationen setzen bzw. updaten.</p>
<p>Hier mal ein kleines Codebeispiel dazu.</p>
<pre class="brush: java;">
/**
 *
 */
package com.nikirocks.common.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;

import org.apache.log4j.Logger;

/**
 * @author Niki
 *
 */
@MappedSuperclass
public abstract class ABase implements Serializable {

 private static final Logger LOG = Logger.getLogger(ABase.class);

 /**
 *
 */
 private static final long serialVersionUID = -8317834487523332409L;
 protected String changedBy = &quot;test&quot;;
 protected Date created;
 protected String createdBy = &quot;test&quot;;
 protected Long id;
 protected Date lastChanged;

 @PrePersist
 public void fillCreated() {
 LOG.info(&quot;fillCreated called&quot;);
 Date now = new Date();
 this.created = now;
 this.lastChanged = now;
 }

 @PreUpdate
 public void fillLastChanged() {
 LOG.info(&quot;fillLastChanged called&quot;);
 this.lastChanged = new Date();
 }

 /**
 * @return the changedBy
 */
 @Column(name = &quot;changedBy&quot;, nullable = false)
 public String getChangedBy() {
 return changedBy;
 }

 /**
 * @return the created
 */
 @Column(name = &quot;created&quot;, nullable = false)
 public Date getCreated() {
 return (Date) created.clone();
 }

 /**
 * @param id
 *            the id to set
 */
 public void setId(Long id) {
 this.id = id;
 }

 /**
 * @return the createdBy
 */
 @Column(name = &quot;createdBy&quot;, nullable = false)
 public String getCreatedBy() {
 return createdBy;
 }

 /**
 * @return the lastChanged
 */
 @Column(name = &quot;lastChanged&quot;, nullable = false)
 public Date getLastChanged() {
 return (Date) lastChanged.clone();
 }

 /**
 * @param changedBy
 *            the changedBy to set
 */
 public void setChangedBy(String changedBy) {
 this.changedBy = changedBy;
 }

 /**
 * @param created
 *            the created to set
 */
 public void setCreated(Date created) {
 this.created = (Date) created.clone();
 }

 /**
 * @param createdBy
 *            the createdBy to set
 */
 public void setCreatedBy(String createdBy) {
 this.createdBy = createdBy;
 }

 /**
 * @param lastChanged
 *            the lastChanged to set
 */
 public void setLastChanged(Date lastChanged) {
 this.lastChanged = (Date) lastChanged.clone();
 }

 @Override
 public String toString() {
 return &quot;Id=&quot; + id + &quot;, created=&quot; + createdBy + &quot;@&quot; + created
 + &quot;, modified=&quot; + lastChanged + &quot;@&quot; + changedBy;
 }
}
</pre>
<p>Das einzige was man nun tun muss ist die Attribute changedBy und createdBy zu versorgen. Woher man diese Information zum aktuell eingeloggten User bekommt hängt stark von der Applikation bzw des gewählten Frameworks ab.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nikirocks.com/blog/2010/03/jpa-audit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog updated!</title>
		<link>http://www.nikirocks.com/blog/2010/03/blog-updated/</link>
		<comments>http://www.nikirocks.com/blog/2010/03/blog-updated/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 09:41:38 +0000</pubDate>
		<dc:creator>niki</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.nikirocks.com/blog/?p=24</guid>
		<description><![CDATA[Heute habe ich mein blog von einer uralten Wordpress Version auf die aktuelle (2.9.2) upgedatet. Gleichzeitig habe ich versucht alle Plugins auf den neuesten Stand zu bringen. Es war eigentlich einfacher als ich mir gedacht habe. Neues Wordpress hochladen, das Upgrade durchführen, und die Plugins updaten. Wichtig war nur den WP-Cache zu leeren, sonst sieht [...]]]></description>
			<content:encoded><![CDATA[<p>Heute habe ich mein blog von einer uralten Wordpress Version auf die aktuelle (2.9.2) upgedatet. Gleichzeitig habe ich versucht alle Plugins auf den neuesten Stand zu bringen. Es war eigentlich einfacher als ich mir gedacht habe. Neues Wordpress hochladen, das Upgrade durchführen, und die Plugins updaten. Wichtig war nur den WP-Cache zu leeren, sonst sieht man eine Menge kryptischer Zeichen auf den Seiten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nikirocks.com/blog/2010/03/blog-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wicket</title>
		<link>http://www.nikirocks.com/blog/2010/02/wicket/</link>
		<comments>http://www.nikirocks.com/blog/2010/02/wicket/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 20:23:21 +0000</pubDate>
		<dc:creator>niki</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[wicket]]></category>

		<guid isPermaLink="false">http://www.nikirocks.com/blog/?p=21</guid>
		<description><![CDATA[In letzter Zeit habe ich mich mit dem Web-Framework Wicket beschäftigt. Einer der größten Vorteile ist die Trennung von Mark-Up und Ablauflogik. Endlich muss der Webdesigner keine Ahnung von speziellen Markups haben. Dieses Framework könnte Zukunft haben!
Sofort habe ich mir ein Buch dazu bestellt - Praxisbuch Wicket. Dieses Buch kann ich nur empfehlen.

Ich werde demnächst [...]]]></description>
			<content:encoded><![CDATA[<p>In letzter Zeit habe ich mich mit dem Web-Framework <a title="Apache Wicket" href="http://wicket.apache.org/" target="_blank">Wicket</a> beschäftigt. Einer der größten Vorteile ist die Trennung von Mark-Up und Ablauflogik. Endlich muss der Webdesigner keine Ahnung von speziellen Markups haben. Dieses Framework könnte Zukunft haben!</p>
<p>Sofort habe ich mir ein Buch dazu bestellt <span id="btAsinTitle">- Praxisbuch Wicket. Dieses Buch kann ich nur empfehlen.<br />
</span></p>
<p>Ich werde demnächst dazu ein Wicket Projekt online stellen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nikirocks.com/blog/2010/02/wicket/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xradar &#8211; alles nicht so einfach mit Maven</title>
		<link>http://www.nikirocks.com/blog/2010/02/xradar-alles-nicht-so-einfach-mit-maven/</link>
		<comments>http://www.nikirocks.com/blog/2010/02/xradar-alles-nicht-so-einfach-mit-maven/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 20:25:41 +0000</pubDate>
		<dc:creator>niki</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[xradar maven]]></category>

		<guid isPermaLink="false">http://www.nikirocks.com/blog/?p=17</guid>
		<description><![CDATA[Endlich habe ich es geschafft. Ich habe das Xradar-Maven-Plugin gebändigt. Es war gar nicht so leicht, auf jeden Fall nicht so leicht wie auf der Plugin-Homepage beschrieben.
Zuerst passten einige Report-Destiniations nicht. Dann musste ich das Plugin aus der Report-Section herausnehmen und in die Build-Section stecken, weil die Emma-Reports und ein paar andere nicht gefunden wurden. [...]]]></description>
			<content:encoded><![CDATA[<p>Endlich habe ich es geschafft. Ich habe das <a title="Xradar-Maven-Plugin" href="http://xradar.sourceforge.net/usage/maven-plugin/howto.html" target="_blank">Xradar-Maven-Plugin</a> gebändigt. Es war gar nicht so leicht, auf jeden Fall nicht so leicht wie auf der Plugin-Homepage beschrieben.</p>
<p>Zuerst passten einige Report-Destiniations nicht. Dann musste ich das Plugin aus der Report-Section herausnehmen und in die Build-Section stecken, weil die <a title="Emma-Reports" href="http://mojo.codehaus.org/emma-maven-plugin/" target="_blank">Emma-Reports</a> und ein paar andere nicht gefunden wurden. Da passt wohl die zeitliche Abfolge oder die Reihenfolge der Reports nicht. Obwohl ich das Xradar-Plugin an das Ende der Report-Section gestellt habe (wie beschrieben) funktionierte es nicht.</p>
<p>Also muss ich jetzt mvn site aufrufen um alle Reports zu erstellen. Danach die Xradar-Goals (audit und dynamic) und anschließend mvn site:deploy um diese Site auf meinen Webspace zu legen. Deshalb musste auch der Site-Descriptor angepasst werden um Links zu den Xradar-Reports einzufügen.</p>
<p>Schlussendlich habe ich dann das <a title="CustomScope" href="http://java.nikirocks.com/projects/springscope/">CustomScope Projekt</a> online gestellt &#8211; inklusive Xradar.</p>
<p>Die nächsten Schritte sollten nun die Xradar-Anpassungen sein (Subsysteme anlegen, usw.) und XRadar in das <a title="Timing Projekt" href="http://java.nikirocks.com/projects/timing/" target="_blank">Timing Projekt</a> zu integrieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nikirocks.com/blog/2010/02/xradar-alles-nicht-so-einfach-mit-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven, Spring, Subversion, &#8230;</title>
		<link>http://www.nikirocks.com/blog/2010/02/maven-spring-subversion/</link>
		<comments>http://www.nikirocks.com/blog/2010/02/maven-spring-subversion/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 17:37:20 +0000</pubDate>
		<dc:creator>niki</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[aspectj]]></category>
		<category><![CDATA[cruisecontrol]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://www.nikirocks.com/blog/?p=12</guid>
		<description><![CDATA[So, nun habe ich mal zwei Beispiele für Java Projekte online gestellt. Es handelt sich um Java Projekte, die mit Maven erstellt wurden. Der Inhalt der Projekte ist nicht so spannend. Ich wollte nur ein paar Tools, die ich schon länger verwende einsetzen und alles online stellen.
Also haute ich in die Tasten und habe diese [...]]]></description>
			<content:encoded><![CDATA[<p>So, nun habe ich mal zwei Beispiele für Java Projekte online gestellt. Es handelt sich um Java Projekte, die mit Maven erstellt wurden. Der Inhalt der Projekte ist nicht so spannend. Ich wollte nur ein paar Tools, die ich schon länger verwende einsetzen und alles online stellen.</p>
<p>Also haute ich in die Tasten und habe diese Schritte unternommen:</p>
<ul>
<li>neue Subdomain erstellt &#8211; http://java.nikirocks.com/</li>
<li>neue Subdomain für Subversion angelegt &#8211; <a title="Subversion repository" href="http://svn.nikirocks.com/" target="_blank">http://svn.nikirocks.com/</a></li>
<li><a title="Subversion" href="http://subversion.tigris.org/" target="_blank">Subversion</a> repository angelegt (ging ganz leicht bei meinem Hoster <a title="dreamhost.com" href="http://www.dreamhost.com/" target="_blank">dreamhost.com</a>)</li>
<li>die alten Spielprojekte Timing und SpringScopes auf <a title="Apache Maven" href="http://maven.apache.org/" target="_blank">maven</a> umgestellt</li>
<li>die Projekte in Subversion angelegt</li>
<li>die maven sites (project-sites) deployed</li>
<li><a title="cruisecontrol" href="http://cruisecontrol.sourceforge.net/" target="_blank">CruiseControl</a> für Continous-Integration eingesetzt</li>
<li><a title="google Analytics" href="http://www.google.com/intl/de_ALL/analytics/" target="_blank">google Analytics</a> in die maven project-sites integriert</li>
</ul>
<p>Folgende Dinge möchte ich als nächstes erledigen:</p>
<ul>
<li><a title="xradar" href="http://xradar.sourceforge.net/" target="_blank">Xradar</a> einbinden</li>
<li><a title="trac" href="http://trac.edgewall.org/" target="_blank">trac</a> oder <a title="bugzilla.org" href="http://www.bugzilla.org/" target="_blank">bugzilla</a> aufsetzen und die Projekte dort einbringen</li>
<li>noch ein paar zusätzliche private Projekte ablegen</li>
</ul>
<p>Für Interessierte gibts hier die Links zu den Projekten</p>
<ul>
<li><a title="Timing with AOP" href="http://java.nikirocks.com/projects/timing/" target="_blank">Timing wiht AOP</a></li>
<li><a title="Custom Scopes with Spring" href="http://java.nikirocks.com/projects/springscope/" target="_blank">Custom Spring Scopes</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nikirocks.com/blog/2010/02/maven-spring-subversion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Public Enemy @ Gasometer</title>
		<link>http://www.nikirocks.com/blog/2008/12/public-enemy-gasometer/</link>
		<comments>http://www.nikirocks.com/blog/2008/12/public-enemy-gasometer/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 07:56:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Konzert]]></category>
		<category><![CDATA[Musik]]></category>
		<category><![CDATA[Gasometer]]></category>
		<category><![CDATA[Rap]]></category>

		<guid isPermaLink="false">http://www.nikirocks.com/blog/?p=8</guid>
		<description><![CDATA[Am Mittwoch (10. Dezember 2008) war es endlich soweit &#8211; Public Enemy gaben sich im Wiener Gasometer die Ehre. Markus und ich waren davor schon sehr gespannt. Viele Fragen und einige Bedenken tauchten vor dem Konzert auf, wie etwa:

kommen beide Superstars of Rap Chuck D und Flavor Flav?
werden vielleicht nur neuer Songs performed?
wie wird die [...]]]></description>
			<content:encoded><![CDATA[<p>Am Mittwoch (10. Dezember 2008) war es endlich soweit &#8211; <a title="PE No. 1" href="http://www.publicenemy.com/" target="_blank">Public Enemy</a> gaben sich im Wiener Gasometer die Ehre. <a title="Markus - Blog" href="http://www.spatzierer.com/" target="_blank">Markus</a> und ich waren davor schon sehr gespannt. Viele Fragen und einige Bedenken tauchten vor dem Konzert auf, wie etwa:</p>
<ul>
<li>kommen beide Superstars of Rap <a title="Chuck D" href="http://de.wikipedia.org/wiki/Chuck_D">Chuck D</a> und <a title="Flavor Flav" href="http://de.wikipedia.org/wiki/Flavor_Flav" target="_blank">Flavor Flav</a>?</li>
<li>werden vielleicht nur neuer Songs performed?</li>
<li>wie wird die Bühnenshow sein?</li>
</ul>
<p><span id="more-8"></span><br />
Um 21:15 gings los und schon mal mit einem Brüller. Ein Manderl in einem Skull-Mask-Bones-Hoodie (Kapuzenjacke im Skelettlook mit einer Kapuze im Totenkopfdesign) stand auf der Bühne um mal die Lage und die Stimmung zu checken. Nach einer Weile öffnete er die Kapuzenjacke und siehe da darunter stecke Flavor Flav und heizte schon mal mit dem ersten Song so richitg ein. Um sich die Kapuzenjacke etwas vorstellen zu können habe ich gleich mal losgegoogelt und so etwas ähnliches hier gefunden <a title="http://img.hottopic.com/is/image/HotTopic/291235_hi" href="http://img.hottopic.com/is/image/HotTopic/291235_hi" target="_blank">http://img.hottopic.com/is/image/HotTopic/291235_hi</a>.</p>
<p>Die nächste Nummer war schon Bring the Noise und Chuck D war ebenfalls on stage. Das war schon mal ein richtiges Highlight. Das Konzert stand unter dem Motto &#8220;It Takes A Nation of Millions To Hold Us Back&#8221; und das bedeutete sie spielten die ganze Scheibe von Anfang bis Ende durch. Somit wurden eigentlich alle Klassiker gebracht etwa wie: Don&#8217;t belive the hype, Welcome to the Terrordome, Shoot &#8216;em down, Fight the Power, etc. etc.</p>
<p>Zwischendurch solierte auch DJ Lord (Nachfolger des unvergessenen Terminator X). Seine Performance war auch sehr cool. Ich kenn mich ja bei den DJ-Sachen nicht so aus, aber das war schon wirklich gut.</p>
<p>Die Bühnenshow war auch super. Der schon fast 50iger Flavor Flav lies es sich nicht nehmen gleich dreimal einen Stagedive hinzulegen. Chuck D gab während mancher Nummern Autogramme für die Fans. Sehr sympathisch. Auf der Bühne waren auch zwei &#8220;Tänzer bzw. Backgroundsänger&#8221; oder waren es doch Bodyguards <img src='http://www.nikirocks.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Gekleidet in US-Marines-Outfit wurden die Superstars keine Sekunde aus den Augen gelassen und wie an einem Gummiband befestigt folgten sie Chuck D und Flav auf Schritt und Tritt. Zwischendurch wurden immer wieder Teile einer militärischen Choreographie aufs Parkett gelegt. War sehr witzig.</p>
<p>Ein paar politische Parolen wie Fuck War oder Fuck George Bush waren natürlich auch dabei &#8211; wie man es von den kritischen Politrappern gewohnt ist.</p>
<p>Nach 2,5 Stunden wars dann ein wirklich gelungenes Konzert vorbei. Leider konnte ich keine Merchandisingartikel mehr bekommen so bin ich dann auf den official PE Store angewiesen. Denn ein Kapperl von Public Enemy ist für mich natürlich schon ein Must-Have.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nikirocks.com/blog/2008/12/public-enemy-gasometer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erster Eintrag</title>
		<link>http://www.nikirocks.com/blog/2008/11/erster-eintrag/</link>
		<comments>http://www.nikirocks.com/blog/2008/11/erster-eintrag/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 17:05:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[start]]></category>

		<guid isPermaLink="false">http://www.nikirocks.com/blog/?p=3</guid>
		<description><![CDATA[So, nun hier mein eigenes Blog. Was hier erscheinen wird ist mir selbst noch nicht ganz klar. Aber ich schätze mal alles von Beruf bis Freizeit und von Wien bis Timbuktu.
Viel Spaß beim Lesen und stay tuned &#8230;
Niki
]]></description>
			<content:encoded><![CDATA[<p>So, nun hier mein eigenes Blog. Was hier erscheinen wird ist mir selbst noch nicht ganz klar. Aber ich schätze mal alles von Beruf bis Freizeit und von Wien bis Timbuktu.</p>
<p>Viel Spaß beim Lesen und stay tuned &#8230;</p>
<p>Niki</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nikirocks.com/blog/2008/11/erster-eintrag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
