Mittwoch, 2. Juni 2010

Javascript Währung und Telefonnummer validator

Es kommt häufiger vor, dass man eine Telefonnummer oder einen Währungsbetrag mittels Javascript validieren möchte. Die folgenden 2 Methoden erfüllen diesen Zweck.
Viel Spaß damit.


function validate_currency(inputField) {
if (inputField.value!="") {
inputField.value = inputField.value.replace(/^\s+|\s+$/g, ''); //trimming the string
var Ergebnis = inputField.value.search(/^[1-9][0-9]{0,2}(.[0-9]{3})*(\,[0-9]{2})$/);
if (Ergebnis == -1) {
inputField.style.backgroundColor = "#FFDDCF";
inputField.focus();
inputField.value = inputField.value; //Trick to set the cursors
} else {
inputField.style.backgroundColor = "";
}
}
}

function validate_telefonnummer(inputField) {
//Überprüfe auf gültiges Format
if (inputField.value!="") {
var Ergebnis = inputField.value.search(/(?:(?:\+|00)[1-9][0-9]{0,3} ?)?(?:\([1-9][0-9]{0,5}\)|0?[1-9][0-9]{0,5})(?: (?:\/ ))?[1-9](?: ?[0-9]){3,7}(?: ?-(?: ?[0-9]){1,5})?/);
if (Ergebnis == -1) {
//document.getElementById("de_wwag_alma_history_EX123").style.display=""; //nicht mehr none -> sichbar
//return false; //formular wir nicht abgeschickt
inputField.style.backgroundColor = "#FFDDCF";
inputField.focus();
return false;
} else {
inputField.style.backgroundColor = "";
}
}
}

Dienstag, 18. Mai 2010

Download JDK 1.5

Der Download von JDK 1.5 über die Java-Homepage ist nur noch über ein Registrierungsformular möglich, in dem man seine Email-Adresse und seinen Namen angeben muss.

Hintergrund ist, dass Java 1.5 seit 3. November 2009 nicht mehr weiterentwickelt wird (End of Service Life, EOSL) und der Download eigentlich nicht mehr möglich sein soll. Siehe Previous Releases auf der Java-Homepage.

Benötigt man aber trotzdem ein JDK 1.5, kann man das oben genannte Formular ausfüllen und sich eine Email mit dem Download-Link schicken lassen oder gleich den folgenden Download-Link benutzen:

http://java.sun.com/javase/downloads/5u22/jdk

Freitag, 14. Mai 2010

Porlet und AJAX

Wie funktioniert AJAX mit Portlets?
Harmonisieren diese 2 Techniken überhaupt miteinander?

Die erste Version der Porlets war nicht für AJAX geeignet.
Um trotzdem AJAX machen zu könnnen mußt der XHR-Request am Porletkontainer vorbeischießen, um dem Anfrager die passende Anwort zusenden zu können.
Dies war/ist kein schöner Designansatz, da der Portalgedanke ausgehebelt wird.
Man benötigt ein zusätzliches Servlet, dass die AJAX-Anfragen entgegen nimmt.




Mit dem neuen JSR 286 sieht, das nun anders raus.
Durch die serveResource()-Methode kann man nun dem Anfrage Inhalte liefert,
die durch diesen angefragt wurden (z.B. XML, PDFs, TXT und JSON).




Normalerweise besteht, das Porlet aus 2 Teilen, dem eigentlichen Portlet und einer JSP, die für die Darstellung verwendet wird.

Um innerhalb einer JSP die serverResource()-Methode des Porlets aufrufen zu können verwendet man den <portlet:resourceURL>-Custom-Tag. Diesem Tag kann man optionale parameter mitschicken, die dann vom porlet ausgewertet werden können.


<a href="http://www.blogger.com/%3Cportlet:resourceURL%3E%09%09%09%09%09%09%09%09%3Cportlet:param%20name=" resource="" value="weitereAnliegen">
<portlet:param name="method" value="view">
<param name="weiteresAnliegenId" value="${actAnliegen.id}">
</portlet:param>" onclick="de_wwag_alma_showPopup(this.href,'pop','1000','900','auto');return false;">${actAnliegen.lfdNr}</portlet:param></a>


Dienstag, 11. Mai 2010

SQL - Spezial insert - select - update - mal anders

Auch wenn Hibernate und Java super Dienste leisten können ist SQL bisweilen praktikabler und performanter.


Die Ergebnisse eines selects verwenden um eine Datenmanipulation vorzunehmen.


insert into GRUND_TREE_OE_TREE (GRUND_TREE_ID,OE_TREE_ID,AKTIV) (
select GRUND_TREE_ID,90000002,'1' from GRUND_TREE_OE_TREE where oe_tree_id=50026709
);



Der update-Befehl scheint implizit auch ein select zu machen - sonst könnte ich mir das ergenis dieses updates nicht erklären. Um die gleiche Manipulation der Daten mit Java-Mitteln zu machen, hätte ich bedeutend mehr Ernergie aufwenden müssen.



update ANLIEGEN set sub_oe_tree_id = oe_tree_id where sub_oe_tree_id is null

Donnerstag, 6. Mai 2010

PortletServices - Die Portletregistry



Die Porletservices von IBM werden mittels iner Porletregistry verwaltet.

Das folgende Screenshot zeigt di aktuell auf meinem System konfigurierten Services.

Montag, 3. Mai 2010

Java Portlets und CSS

Pluto ist die Referenzimplementierung der Java-Portlet-Spezifikation.

Eine nähere Betrachtung lohnt sich auf jeden Fall. In Pluto gibt es den so genannte Portal-Driver (pluto.war). In diesem war-Archiv findet man unter anderem die Dateien portlet-spec-1.0.css und portlet-spec-2.0.css.
Diese 2 Dateien enthalten alle CSS-Selektoren die man in einem Portal verwenden sollte.
z.B. .portlet-msg-error.


Außerdem sind die Dateien portlet-skin.jsp und pluto-default-theme.jsp enthalten. An diesen zwei Dateien läßt sich einfach illustrieren was ein Skin und was ein Theme ist. Ein Skin ist das Layout eines Portlets und beinhaltet unter anderem die Controlls um das Porlet zu minimieren, maximieren und wieder auf die normale größe zu schlaten.

Das Theme betrifft das komplette Layout des Portals.

RESTART WITH

Im DB2 und Derby gibt es die Möglichkeiten sich primärschlüssel generieren zu lassen.
CREATE TABLE ALMAUSR.WEITER_BEARB (
ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) PRIMARY KEY,
USER_ID VARCHAR(8) NOT NULL,
NAME VARCHAR(250) NOT NULL, -- Nur zur Info im Pflegedialog
AEND_USER VARCHAR(8) NOT NULL,
AEND_DAT TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
SYS_DAT DATE DEFAULT CURRENT_DATE NOT NULL
)



Nachdem man per INSERT-Befehl manuell ein paar Datensätze hinzu gefügt hat (mit man. ID) muß man dem System sagen bei welcher Nummerierung es weiter machen soll. Dies muß manuell erfolgen. Im folgenden Beispiel wird dem System gesagt, dass der Zähler ab der ID 28 weiter hochzählen soll.

ALTER TABLE table-name ALTER COLUMN RESTART WITH 28


Eventuell macht es Sinn dies in der Applikation einzubauen, so das der Befehl nicht manuell eingegeben werden muß. z.B. in Kombination mit einem select max-Befehl.

SELECT MAX(id-col) from table-name