grep -He tarif-applique.[0-9]*..tarif-applique $1/RAV9*.xml | sed "s/.*RAV\([0-9\-]*\).*:.*tarif-applique.\([0-9]*\)..tarif-applique.*/RAV \1 = \2 /" >> listeRAV-tarif.tmp
# puis on va chercher le RV la version du tarifs appliqué (si elle existe sinon ...A VOIR ...)
while read line
do
# creation d'un tableau, chaque espace sert de delimiter pour un futur element du tableau
arrLine=( $line)
# il peut y avoir plusieurs balise (avec les PANS) mais la version du tarifs du RV sera la dernière du fichier
version=( `grep -e version-tarif.[0-9]*..version-tarif $2/RV${arrLine[1]}.xml | sed "s/.*version-tarif.\([0-9]*\)..version-tarif.*/\1/"`)
# pour lister les tarifs des PANS
tarif=( `grep -e tarif-applique.[0-9]*..tarif-applique $2/RV${arrLine[1]}.xml | sed "s/.*tarif-applique.\([0-9]*\)..tarif-applique.*/\1/"`)
if [ ${#version[*]} -eq 0 ]
then
aff_version=" non trouve (inexistant, ou date incompatible, ...)"
elif [ ${#version[*]} -eq 1 ]
then
aff_version=" version ${version[0]}"
else
aff_version=" version ${version[$((${#version[*]}-1))]}"
# affichage des des tarifs des PANS
nb=0
while [ $nb -lt $((${#tarif[*]})) ]
do
echo "RV${arrLine[1]} PAN $((nb+1)) = ${tarif[nb]} version ${version[nb]}" >> listeRV-PAN-tarif-version.tmp
nb=$((nb+1))
done
fi
echo "RV${arrLine[1]} = ${arrLine[3]} $aff_version" >> listeRV-tarif-version.tmp
done < listeRAV-tarif.tmp
cat listeRV-tarif-version.tmp | sed "s/.*=\(.*\)/\1/" > listeTarifBrute.tmp
cat listeRV-PAN-tarif-version.tmp | sed "s/.*=\(.*\)/\1/" >> listeTarifBrute.tmp
nbTests=`cat listeRAV-tarif.tmp | wc -l`
nbId=`cat listeRAV-tarif.tmp | sed "s/.*=\(.*\)/\1/" | sort -u | wc -l`
nbTarifs=`cat listeRV-tarif-version.tmp | sed "s/.*=\(.*\)/\1/" | sort -u | wc -l`
nbTarifsPAN=`cat listeRV-PAN-tarif-version.tmp | sed "s/.*=\(.*\)/\1/" | sort -u | wc -l`
mercredi 27 octobre 2010
linux : shell script
Voici quelques exemples sympa de remplacements ...
mardi 19 octobre 2010
migration CVS a SVN : rappel ...
Pour migrer simplement un projet CVS sous SVN, il existe un outil en python nommé :
cvs2svn
Pour créer un nouveau dépôt Subversion en convertissant un dépôt CVS existant, exécutez le script comme ceci:
Attention, il ne faut pas hésiter à faire une copie de sauvegarde du repos CVS ;-)
$ Cvs2svn-s NEW_SVNREPOS CVSREPOS
Pour créer un nouveau référentiel Subversion malle contenant seulement commet, et en omettant toutes les branches et les étiquettes à partir de CVS, ne
$ Cvs2svn - coffre-que-s NEW_SVNREPOS CVSREPOS
Pour créer un fichier de sauvegarde Subversion (svnadmin appropriée à la charge) à partir d'un dépôt CVS, exécutez-le comme ceci:
$ Cvs2svn - dump-only - dumpfile DUMPFILE CVSREPOS
Attention a préciser l'encoding (par ex : pour windows). De plus, si des erreurs se produisent le cvs2svn s'interrompt ... :
$ cvs2svn -v --encoding=cp1252 -s /repos/BOC201010 /repos/tmp/BOC201010/java
$ Cvs2svn --encoding=utf_8 -s NEW_SVNREPOS CVSREPOS
Une fois la commande utilisé, il faut se rendre sous le nouveau repo svn, et y ajouter les droits adéquates ... Par exemple :
Et on donne les accès dans le fichier access
sudo nano ../access
[svnrepo:/]
@dev = rw
* = r
cvs2svn
Pour créer un nouveau dépôt Subversion en convertissant un dépôt CVS existant, exécutez le script comme ceci:
Attention, il ne faut pas hésiter à faire une copie de sauvegarde du repos CVS ;-)
$ Cvs2svn-s NEW_SVNREPOS CVSREPOS
Pour créer un nouveau référentiel Subversion malle contenant seulement commet, et en omettant toutes les branches et les étiquettes à partir de CVS, ne
$ Cvs2svn - coffre-que-s NEW_SVNREPOS CVSREPOS
Pour créer un fichier de sauvegarde Subversion (svnadmin appropriée à la charge) à partir d'un dépôt CVS, exécutez-le comme ceci:
$ Cvs2svn - dump-only - dumpfile DUMPFILE CVSREPOS
Attention a préciser l'encoding (par ex : pour windows). De plus, si des erreurs se produisent le cvs2svn s'interrompt ... :
$ cvs2svn -v --encoding=cp1252 -s /repos/BOC201010 /repos/tmp/BOC201010/java
$ Cvs2svn --encoding=utf_8 -s NEW_SVNREPOS CVSREPOS
Une fois la commande utilisé, il faut se rendre sous le nouveau repo svn, et y ajouter les droits adéquates ... Par exemple :
Et on donne les accès dans le fichier access
sudo nano ../access
[svnrepo:/]
@dev = rw
* = r
maven : publier un catlogue d'archetypes
Comment créer un catalogue d'archetypes ?
Pour cela, il faut générer un fichier xml partuiculier. Un moyen simple est l'utilisation du goal "archetype:crawl" scan votre repository local à la recherche de vos archetypes :
mvn archetype:crawl
Un lien avec une explication complète
Pour cela, il faut générer un fichier xml partuiculier. Un moyen simple est l'utilisation du goal "archetype:crawl" scan votre repository local à la recherche de vos archetypes :
mvn archetype:crawl
Un lien avec une explication complète
maven : les archetypes interessants
un super lien sur maven et les archetypes notables
Voici un petit résumé des archetypes les plus utiles :
* maven-archetype-quickstart (un simple jar)
* maven-archetype-webapp (une simple webapp)
* maven-archetype-mojo (un plugin maven)
En résumé AppFuse, c'est Spring / hibernate / (JSF, struts ou tapestry)) et MySQL le quickstart AppFuse est nécessaire
* appfuse-basic-jsf et appfuse-modular-jsf
Application complète utilisant JSF (Java Server Faces) comme couche de présentation.
* appfuse-basic-spring et appfuse-modular-spring
Application complète utilisant Spring MVC comme couche de présentation.
* appfuse-basic-struts et appfuse-modular-struts
Application complète utilisant Struts 2 comme couche de présentation.
* appfuse-basic-tapestry et appfuse-modular-tapestry
Application complète utilisant Tapestry comme couche de présentation.
* appfuse-core (Modèle objet et sa couche de persistance sans couche présentation.)
Voici un petit exemple :
mvn archetype:generate \
-DarchetypeArtifactId=appfuse-modular-spring \
-DarchetypeGroupId=org.appfuse.archetypes \
-DgroupId=org.sonatype.mavenbook \
-DartifactId=mod-spring \
-Dversion=1.0-SNAPSHOT \
-DinteractiveMode=false
Ou avec Tapestry :
mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-tapestry-archetype -DarchetypeVersion=2.1.0-M1 -DgroupId=com.mycompany -DartifactId=myproject
Rappel pour MySQL et AppFuse
Voici un petit résumé des archetypes les plus utiles :
* maven-archetype-quickstart (un simple jar)
* maven-archetype-webapp (une simple webapp)
* maven-archetype-mojo (un plugin maven)
En résumé AppFuse, c'est Spring / hibernate / (JSF, struts ou tapestry)) et MySQL le quickstart AppFuse est nécessaire
* appfuse-basic-jsf et appfuse-modular-jsf
Application complète utilisant JSF (Java Server Faces) comme couche de présentation.
* appfuse-basic-spring et appfuse-modular-spring
Application complète utilisant Spring MVC comme couche de présentation.
* appfuse-basic-struts et appfuse-modular-struts
Application complète utilisant Struts 2 comme couche de présentation.
* appfuse-basic-tapestry et appfuse-modular-tapestry
Application complète utilisant Tapestry comme couche de présentation.
* appfuse-core (Modèle objet et sa couche de persistance sans couche présentation.)
Voici un petit exemple :
mvn archetype:generate \
-DarchetypeArtifactId=appfuse-modular-spring \
-DarchetypeGroupId=org.appfuse.archetypes \
-DgroupId=org.sonatype.mavenbook \
-DartifactId=mod-spring \
-Dversion=1.0-SNAPSHOT \
-DinteractiveMode=false
Ou avec Tapestry :
mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-tapestry-archetype -DarchetypeVersion=2.1.0-M1 -DgroupId=com.mycompany -DartifactId=myproject
Rappel pour MySQL et AppFuse
Il faut un "user mySQL" root avec un password vide
MySQL Security
Running MySQL using root with no password is not the most secure thing to do. Once your database is created, you can change the root password using the command below:
mysql --user=root --pass='' mysql -e "update user set password=password('newpw') \
where user='root'; flush privileges;"
AppFuse uses the username "root" and a blank password by default. To change these values, modify the and properties in your project's pom.xml (at the bottom).
lundi 18 octobre 2010
unix : conversion en UTF-8 ou autre
Il arrive souvent que l'on ait des soucis d'encodage lorsque l'on développe sous windows avec eclipse et sous Linux ... Pour parer à toute enventualités, il est fréquent de devoir réencoder les fichiers en UTF-8 (par exemple pour maveniser l'application).
Voici un petit script sous cygwin qui fait cela tout seul
Voici un petit script sous cygwin qui fait cela tout seul
in/bash
function print_usage()
{
echo "$`basename $0` nomDuRepertoire"
}
set -x
if [ $# -lt 1 ]
then
print_usage
else
rm -ivf *.old
FILES=`find . -type f \( -name '*.txt' -o -name '*.properties' -o -name '*.txt' -o -name '*.local' \)`
for FILE in $FILES
do
if [ -e $FILE ]
then
iconv -f cp1252 -t UTF-8 $FILE > "$FILE.new"
mv "$FILE" "$FILE.old"
mv "$FILE.new" "$FILE"
fi
done
fi
vendredi 15 octobre 2010
unix shell ksh : switch example
Voici, un petit exemple de switch case en ksh
if [ $# -lt 2 ]; then
print_usage
exit $STATE_OK
fi
while test -n "$1"; do
case "$1" in
--help)
print_usage
exit $STATE_OK
;;
-h)
print_usage
exit $STATE_OK
;;
-a)
ServerName=$2
shift
;;
*)
echo "Unknown argument: $1"
print_usage
exit $STATE_UNKNOWN
;;
esac
shift
done
mercredi 13 octobre 2010
java : client webservice avec maven et jax-ws
Voici, le pom permettant de générer le code client via "wsimport"
De plus, il est possible de générer la partie serveur avec wsgen :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>testJaxWS</groupId>
<artifactId>testJaxWS</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>testJaxWS</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.1.3</version>
</dependency>
</dependencies>
<build>
<defaultGoal>clean package</defaultGoal>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
<configuration>
<wsdlUrls>
<wsdlUrl>
http://unServeur:20010/liaisons/services/Fourniture?wsdl
</wsdlUrl>
<!-- ${basedir}/src/main/resources/fourniture.wsdl -->
</wsdlUrls>
<packageName>com.proto.ws.fourniture</packageName> <!-- The name of your generated source package -->
</configuration>
<!--
if you want to use a specific version of JAX-WS, you can do so like
this
-->
<dependencies>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-tools</artifactId>
<version>2.1.3</version>
</dependency>
</dependencies>
</plugin>
<!-- Don't forget Java 5!! -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
De plus, il est possible de générer la partie serveur avec wsgen :
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>wsgen</goal>
</goals>
<configuration>
<packageName>com.weflex.service</packageName>
<!-- The name of your generated source package -->
<sei>com.welflex.soap.ws.OrderWebService</sei>
<keep>true</keep>
<genWsdl>true</genWsdl>
</configuration>
</execution>
</executions>
java : un super site
Le site javaranch est vraiment très bien !!!
- il dispose de nombreuses FAQ
- et articles technique très à jour
javaranch
- il dispose de nombreuses FAQ
- et articles technique très à jour
javaranch
mardi 12 octobre 2010
J2EE : envoyer un message JMS
Voici la marche à suivre :
1) récuperer le contexte JNDI
(ex: de valeurs:
- pour weblo l'url de t3://orchestre.si.fr:11133
- jndi.jms.fileretourvaloClassique=jms/retourValorisationQueue
2) récupérer la "connexion factory" et la queue :
3) Une fois la connexion factory, recupérer la queue Session, et un sender, message
Voici un exemple complet:
1) récuperer le contexte JNDI
(ex: de valeurs:
- pour weblo l'url de t3://orchestre.si.fr:11133
- jndi.jms.fileretourvaloClassique=jms/retourValorisationQueue
jndiContext = InitialContextManager.getInitialContext(urlAnnuaireJndiDestination);
2) récupérer la "connexion factory" et la queue :
connectionFactory = (QueueConnectionFactory)
jndiContext.lookup(PropertiesManager.getInstance().getString(
"jndi.jms.connectionfactory"));
destQueue = (Queue) jndiContext.lookup(nomJndiFileDestination);
3) Une fois la connexion factory, recupérer la queue Session, et un sender, message
connection = connectionFactory.createQueueConnection();
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
qSender = session.createSender(destQueue);
ObjectMessage message = session.createObjectMessage();
message.setJMSCorrelationID(idMessage);
message.setObject(objetAEnvoyer);
Voici un exemple complet:
/**
*
* @param urlAnnuaireJndiDestination String serveur (jndi)
* @param nomJndiFileDestination String file JMS (jndi)
* @throws ServiceJMSException
*/
public void init(String urlAnnuaireJndiDestination,
String nomJndiFileDestination) throws ServiceJMSException {
try {
//On garde ces 2 paramètres pour faire un réinit si besoin
urlAnnuaireJndiDestinationReinit=urlAnnuaireJndiDestination;
nomJndiFileDestinationReinit=nomJndiFileDestination;
jndiContext = InitialContextManager.getInitialContext(
urlAnnuaireJndiDestination);
connectionFactory = (QueueConnectionFactory)
jndiContext.lookup(PropertiesManager.getInstance().getString(
"jndi.jms.connectionfactory"));
destQueue = (Queue) jndiContext.lookup(nomJndiFileDestination);
logger.info("JMS Initialisation terminée");
}
catch (Exception e) {
logger.fatal("JMS Initialisation en erreur",e);
throw new ServiceJMSException(e);
}
private synchronized void essayerEnvoyerMessage(Serializable objetAEnvoyer, String idMessage,String replyServerName, String replyQueueName) throws JMSException, ServiceJMSException {
if(connectionFactory==null ){
logger.error("JMS Connection Factory null, tentative de réinitialisation.");
init(urlAnnuaireJndiDestinationReinit, nomJndiFileDestinationReinit);
}
connection = connectionFactory.createQueueConnection();
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
qSender = session.createSender(destQueue);
ObjectMessage message = session.createObjectMessage();
message.setJMSCorrelationID(idMessage);
message.setObject(objetAEnvoyer);
//message.setJMSExpiration(30000);
if(replyServerName!=null){
message.setStringProperty(REPLY_SERVER_NAME,replyServerName);
}
if(replyQueueName!=null){
message.setStringProperty(REPLY_QUEUE_NAME,replyQueueName);
}
qSender.send(message);
// Release Sender
if (qSender != null) {
try {
qSender.close();
} catch (JMSException vJMSException) {
logger.error("Error close QueueSender " + vJMSException.getStackTrace());
}
}
//Release QueueSession
if (session != null) {
try {
session.close();
} catch (JMSException vJMSException) {
logger.error("Error close QueueSession " + vJMSException.getStackTrace());
}
}
//Release QueueConnection
if (connection != null) {
try {
connection.close();
} catch (JMSException vJMSException) {
logger.error("Error close QueueConnection " + vJMSException.getStackTrace());
}
}
}
windows : script shell
Voici des petits exemples de script sous windows ...
Tout d'abord le set ...
Puis, le if, et un jump a "noReset" ...
Un second if avec un test
Puis un if qui test si un fihcier exist, et si oui, l'appel :
Puis, un if not ...
Puis une boucle :
Une fonction complexe:
Tout d'abord le set ...
@rem Choose proper WebLogic jni libraries
set WL_USE_X86DLL=true
set WL_USE_IA64DLL=false
@rem Set Ant Home
set ANT_HOME=%MODULES_DIR%\org.apache.ant_1.7.1
Puis, le if, et un jump a "noReset" ...
@rem Reset JAVA_HOME, JAVA_VENDOR and PRODUCTION_MODE unless JAVA_HOME and
@rem JAVA_VENDOR are defined already.
if DEFINED JAVA_HOME if DEFINED JAVA_VENDOR goto noReset
...
:noReset
Un second if avec un test
if "%JAVA_VENDOR%" == "Sun" goto sun
Puis un if qui test si un fihcier exist, et si oui, l'appel :
@rem setup patch related class path, library path, path and extension dirs options
if exist "%WL_HOME%\common\bin\setPatchEnv.cmd" call "%WL_HOME%\common\bin\setPatchEnv.cmd"
Puis, un if not ...
IF NOT "%DERBY_PRE_CLASSPATH%"=="" (
set DERBY_CLASSPATH=%DERBY_PRE_CLASSPATH%;%DERBY_CLASSPATH%
)
...
IF NOT EXIST %WL_HOME%\common\eval\pointbase goto endpointbase
Puis une boucle :
set ANT_HOME=%MODULES_DIR%\org.apache.ant_1.7.1
FOR %%i IN ("%ANT_HOME%") DO SET ANT_HOME=%%~fsi
Une fonction complexe:
:SETARG
SET ARGNAME=%1
SET ARGVALUE=%2
SHIFT
SHIFT
FOR %%I IN (%ARGVALUE%) DO SET ARGVALUE=%%~I
IF /i "%ARGNAME%"=="-log" (
IF "%ARGVALUE:~1,1%"==":" (
SET ARGUMENTS=%ARGUMENTS% %ARGNAME%=%ARGVALUE%
) ELSE (
SET ARGUMENTS=%ARGUMENTS% %ARGNAME%=%MYPWD%\%ARGVALUE%
)
GOTO :PARSEARGS
) ELSE (
IF /i "%ARGNAME%"=="-silent_script" (
IF "%ARGVALUE:~1,1%"==":" (
SET ARGUMENTS=%ARGUMENTS% %ARGNAME%=%ARGVALUE%
) ELSE (
SET ARGUMENTS=%ARGUMENTS% %ARGNAME%=%MYPWD%\%ARGVALUE%
)
GOTO :PARSEARGS
) ELSE (
IF /i "%ARGNAME%"=="-useXACML" (
SET MEM_ARGS=%MEM_ARGS% -DuseXACML=%ARGVALUE%
) ELSE (
SET ARGUMENTS=%ARGUMENTS% %ARGNAME%="%ARGVALUE%"
)
GOTO :PARSEARGS
)
)
vendredi 8 octobre 2010
javascript : exemples complexes
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
http://dojotoolkit.org/community/licensing.shtml
*/
dojo.provide("dojo.html.style");
dojo.require("dojo.html.common");
dojo.require("dojo.uri.Uri");
dojo.html.getClass = function(/* HTMLElement */node){
// summary
// Returns the string value of the list of CSS classes currently assigned directly
// to the node in question. Returns an empty string if no class attribute is found;
node = dojo.byId(node);
if(!node){ return ""; }
var cs = "";
if(node.className){
cs = node.className;
}else if(dojo.html.hasAttribute(node, "class")){
cs = dojo.html.getAttribute(node, "class");
}
return cs.replace(/^\s+|\s+$/g, ""); // string
}
dojo.html.getClasses = function(/* HTMLElement */node) {
// summary
// Returns an array of CSS classes currently assigned directly to the node in question.
// Returns an empty array if no classes are found;
var c = dojo.html.getClass(node);
return (c == "") ? [] : c.split(/\s+/g); // array
}
dojo.html.hasClass = function(/* HTMLElement */node, /* string */classname){
// summary
// Returns whether or not the specified classname is a portion of the
// class list currently applied to the node. Does not cover cascaded
// styles, only classes directly applied to the node.
return (new RegExp('(^|\\s+)'+classname+'(\\s+|$)')).test(dojo.html.getClass(node)) // boolean
}
dojo.html.prependClass = function(/* HTMLElement */node, /* string */classStr){
// summary
// Adds the specified class to the beginning of the class list on the
// passed node. This gives the specified class the highest precidence
// when style cascading is calculated for the node. Returns true or
// false; indicating success or failure of the operation, respectively.
classStr += " " + dojo.html.getClass(node);
return dojo.html.setClass(node, classStr); // boolean
}
dojo.html.addClass = function(/* HTMLElement */node, /* string */classStr){
// summary
// Adds the specified class to the end of the class list on the
// passed &node;. Returns &true; or &false; indicating success or failure.
if (dojo.html.hasClass(node, classStr)) {
return false;
}
classStr = (dojo.html.getClass(node) + " " + classStr).replace(/^\s+|\s+$/g,"");
return dojo.html.setClass(node, classStr); // boolean
}
dojo.html.setClass = function(/* HTMLElement */node, /* string */classStr){
// summary
// Clobbers the existing list of classes for the node, replacing it with
// the list given in the 2nd argument. Returns true or false
// indicating success or failure.
node = dojo.byId(node);
var cs = new String(classStr);
try{
if(typeof node.className == "string"){
node.className = cs;
}else if(node.setAttribute){
node.setAttribute("class", classStr);
node.className = cs;
}else{
return false;
}
}catch(e){
dojo.debug("dojo.html.setClass() failed", e);
}
return true;
}
dojo.html.removeClass = function(/* HTMLElement */node, /* string */classStr, /* boolean? */allowPartialMatches){
// summary
// Removes the className from the node;. Returns true or false indicating success or failure.
try{
if (!allowPartialMatches) {
var newcs = dojo.html.getClass(node).replace(new RegExp('(^|\\s+)'+classStr+'(\\s+|$)'), "$1$2");
} else {
var newcs = dojo.html.getClass(node).replace(classStr,'');
}
dojo.html.setClass(node, newcs);
}catch(e){
dojo.debug("dojo.html.removeClass() failed", e);
}
return true; // boolean
}
dojo.html.replaceClass = function(/* HTMLElement */node, /* string */newClass, /* string */oldClass) {
// summary
// Replaces 'oldClass' and adds 'newClass' to node
dojo.html.removeClass(node, oldClass);
dojo.html.addClass(node, newClass);
}
// Enum type for getElementsByClass classMatchType arg:
dojo.html.classMatchType = {
ContainsAll : 0, // all of the classes are part of the node's class (default)
ContainsAny : 1, // any of the classes are part of the node's class
IsOnly : 2 // only all of the classes are part of the node's class
}
dojo.html.getElementsByClass = function(
/* string */classStr,
/* HTMLElement? */parent,
/* string? */nodeType,
/* integer? */classMatchType,
/* boolean? */useNonXpath
){
// summary
// Returns an array of nodes for the given classStr, children of a
// parent, and optionally of a certain nodeType
// FIXME: temporarily set to false because of several dojo tickets related
// to the xpath version not working consistently in firefox.
useNonXpath = false;
var _document = dojo.doc();
parent = dojo.byId(parent) || _document;
var classes = classStr.split(/\s+/g);
var nodes = [];
if( classMatchType != 1 && classMatchType != 2 ) classMatchType = 0; // make it enum
var reClass = new RegExp("(\\s|^)((" + classes.join(")|(") + "))(\\s|$)");
var srtLength = classes.join(" ").length;
var candidateNodes = [];
if(!useNonXpath && _document.evaluate) { // supports dom 3 xpath
var xpath = ".//" + (nodeType || "*") + "[contains(";
if(classMatchType != dojo.html.classMatchType.ContainsAny){
xpath += "concat(' ',@class,' '), ' " +
classes.join(" ') and contains(concat(' ',@class,' '), ' ") +
" ')";
if (classMatchType == 2) {
xpath += " and string-length(@class)="+srtLength+"]";
}else{
xpath += "]";
}
}else{
xpath += "concat(' ',@class,' '), ' " +
classes.join(" ') or contains(concat(' ',@class,' '), ' ") +
" ')]";
}
var xpathResult = _document.evaluate(xpath, parent, null, XPathResult.ANY_TYPE, null);
var result = xpathResult.iterateNext();
while(result){
try{
candidateNodes.push(result);
result = xpathResult.iterateNext();
}catch(e){ break; }
}
return candidateNodes; // NodeList
}else{
if(!nodeType){
nodeType = "*";
}
candidateNodes = parent.getElementsByTagName(nodeType);
var node, i = 0;
outer:
while(node = candidateNodes[i++]){
var nodeClasses = dojo.html.getClasses(node);
if(nodeClasses.length == 0){ continue outer; }
var matches = 0;
for(var j = 0; j < nodeClasses.length; j++){
if(reClass.test(nodeClasses[j])){
if(classMatchType == dojo.html.classMatchType.ContainsAny){
nodes.push(node);
continue outer;
}else{
matches++;
}
}else{
if(classMatchType == dojo.html.classMatchType.IsOnly){
continue outer;
}
}
}
if(matches == classes.length){
if( (classMatchType == dojo.html.classMatchType.IsOnly)&&
(matches == nodeClasses.length)){
nodes.push(node);
}else if(classMatchType == dojo.html.classMatchType.ContainsAll){
nodes.push(node);
}
}
}
return nodes; // NodeList
}
}
dojo.html.getElementsByClassName = dojo.html.getElementsByClass;
dojo.html.toCamelCase = function(/* string */selector){
// summary
// Translates a CSS selector string to a camel-cased one.
var arr = selector.split('-'), cc = arr[0];
for(var i = 1; i < arr.length; i++) {
cc += arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
}
return cc; // string
}
dojo.html.toSelectorCase = function(/* string */selector){
// summary
// Translates a camel cased string to a selector cased one.
return selector.replace(/([A-Z])/g, "-$1" ).toLowerCase(); // string
}
dojo.html.getComputedStyle = function(/* HTMLElement */node, /* string */cssSelector, /* integer? */inValue){
// summary
// Returns the computed style of cssSelector on node.
node = dojo.byId(node);
// cssSelector may actually be in camel case, so force selector version
var cssSelector = dojo.html.toSelectorCase(cssSelector);
var property = dojo.html.toCamelCase(cssSelector);
if(!node || !node.style){
return inValue;
} else if (document.defaultView && dojo.html.isDescendantOf(node, node.ownerDocument)){ // W3, gecko, KHTML
try{
// mozilla segfaults when margin-* and node is removed from doc
// FIXME: need to figure out a if there is quicker workaround
var cs = document.defaultView.getComputedStyle(node, "");
if(cs){
return cs.getPropertyValue(cssSelector); // integer
}
}catch(e){ // reports are that Safari can throw an exception above
if(node.style.getPropertyValue){ // W3
return node.style.getPropertyValue(cssSelector); // integer
} else {
return inValue; // integer
}
}
} else if(node.currentStyle){ // IE
return node.currentStyle[property]; // integer
}
if(node.style.getPropertyValue){ // W3
return node.style.getPropertyValue(cssSelector); // integer
}else{
return inValue; // integer
}
}
dojo.html.getStyleProperty = function(/* HTMLElement */node, /* string */cssSelector){
// summary
// Returns the value of the passed style
node = dojo.byId(node);
return (node && node.style ? node.style[dojo.html.toCamelCase(cssSelector)] : undefined); // string
}
dojo.html.getStyle = function(/* HTMLElement */node, /* string */cssSelector){
// summary
// Returns the computed value of the passed style
var value = dojo.html.getStyleProperty(node, cssSelector);
return (value ? value : dojo.html.getComputedStyle(node, cssSelector)); // string || integer
}
dojo.html.setStyle = function(/* HTMLElement */node, /* string */cssSelector, /* string */value){
// summary
// Set the value of passed style on node
node = dojo.byId(node);
if(node && node.style){
var camelCased = dojo.html.toCamelCase(cssSelector);
node.style[camelCased] = value;
}
}
dojo.html.setStyleText = function (/* HTMLElement */target, /* string */text) {
// summary
// Try to set the entire cssText property of the passed target; equiv of setting style attribute.
try {
target.style.cssText = text;
} catch (e) {
target.setAttribute("style", text);
}
}
dojo.html.copyStyle = function(/* HTMLElement */target, /* HTMLElement */source){
// summary
// work around for opera which doesn't have cssText, and for IE which fails on setAttribute
if(!source.style.cssText){
target.setAttribute("style", source.getAttribute("style"));
}else{
target.style.cssText = source.style.cssText;
}
dojo.html.addClass(target, dojo.html.getClass(source));
}
dojo.html.getUnitValue = function(/* HTMLElement */node, /* string */cssSelector, /* boolean? */autoIsZero){
// summary
// Get the value of passed selector, with the specific units used
var s = dojo.html.getComputedStyle(node, cssSelector);
if((!s)||((s == 'auto')&&(autoIsZero))){
return { value: 0, units: 'px' }; // object
}
// FIXME: is regex inefficient vs. parseInt or some manual test?
var match = s.match(/(\-?[\d.]+)([a-z%]*)/i);
if (!match){return dojo.html.getUnitValue.bad;}
return { value: Number(match[1]), units: match[2].toLowerCase() }; // object
}
dojo.html.getUnitValue.bad = { value: NaN, units: '' };
dojo.html.getPixelValue = function(/* HTMLElement */node, /* string */cssSelector, /* boolean? */autoIsZero){
// summary
// Get the value of passed selector in pixels.
var result = dojo.html.getUnitValue(node, cssSelector, autoIsZero);
// FIXME: there is serious debate as to whether or not this is the right solution
if(isNaN(result.value)){
return 0; // integer
}
// FIXME: code exists for converting other units to px (see Dean Edward's IE7)
// but there are cross-browser complexities
if((result.value)&&(result.units != 'px')){
return NaN; // integer
}
return result.value; // integer
}
dojo.html.setPositivePixelValue = function(/* HTMLElement */node, /* string */selector, /* integer */value){
// summary
// Attempt to set the value of selector on node as a positive pixel value.
if(isNaN(value)){return false;}
node.style[selector] = Math.max(0, value) + 'px';
return true; // boolean
}
dojo.html.styleSheet = null;
// FIXME: this is a really basic stub for adding and removing cssRules, but
// it assumes that you know the index of the cssRule that you want to add
// or remove, making it less than useful. So we need something that can
// search for the selector that you you want to remove.
dojo.html.insertCssRule = function(/* string */selector, /* string */declaration, /* integer? */index) {
// summary
// Attempt to insert declaration as selector on the internal stylesheet; if index try to set it there.
if (!dojo.html.styleSheet) {
if (document.createStyleSheet) { // IE
dojo.html.styleSheet = document.createStyleSheet();
} else if (document.styleSheets[0]) { // rest
// FIXME: should create a new style sheet here
// fall back on an exsiting style sheet
dojo.html.styleSheet = document.styleSheets[0];
} else {
return null; // integer
} // fail
}
if (arguments.length < 3) { // index may == 0
if (dojo.html.styleSheet.cssRules) { // W3
index = dojo.html.styleSheet.cssRules.length;
} else if (dojo.html.styleSheet.rules) { // IE
index = dojo.html.styleSheet.rules.length;
} else {
return null; // integer
} // fail
}
if (dojo.html.styleSheet.insertRule) { // W3
var rule = selector + " { " + declaration + " }";
return dojo.html.styleSheet.insertRule(rule, index); // integer
} else if (dojo.html.styleSheet.addRule) { // IE
return dojo.html.styleSheet.addRule(selector, declaration, index); // integer
} else {
return null; // integer
} // fail
}
dojo.html.removeCssRule = function(/* integer? */index){
// summary
// Attempt to remove the rule at index.
if(!dojo.html.styleSheet){
dojo.debug("no stylesheet defined for removing rules");
return false;
}
if(dojo.render.html.ie){
if(!index){
index = dojo.html.styleSheet.rules.length;
dojo.html.styleSheet.removeRule(index);
}
}else if(document.styleSheets[0]){
if(!index){
index = dojo.html.styleSheet.cssRules.length;
}
dojo.html.styleSheet.deleteRule(index);
}
return true; // boolean
}
dojo.html._insertedCssFiles = []; // cache container needed because IE reformats cssText when added to DOM
dojo.html.insertCssFile = function(/* string */URI, /* HTMLDocument? */doc, /* boolean? */checkDuplicates, /* boolean */fail_ok){
// summary
// calls css by XmlHTTP and inserts it into DOM as
if(!URI){ return; }
if(!doc){ doc = document; }
var cssStr = dojo.hostenv.getText(URI, false, fail_ok);
if(cssStr===null){ return; }
cssStr = dojo.html.fixPathsInCssText(cssStr, URI);
if(checkDuplicates){
var idx = -1, node, ent = dojo.html._insertedCssFiles;
for(var i = 0; i < ent.length; i++){
if((ent[i].doc == doc) && (ent[i].cssText == cssStr)){
idx = i; node = ent[i].nodeRef;
break;
}
}
// make sure we havent deleted our node
if(node){
var styles = doc.getElementsByTagName("style");
for(var i = 0; i < styles.length; i++){
if(styles[i] == node){
return;
}
}
// delete this entry
dojo.html._insertedCssFiles.shift(idx, 1);
}
}
var style = dojo.html.insertCssText(cssStr, doc);
dojo.html._insertedCssFiles.push({'doc': doc, 'cssText': cssStr, 'nodeRef': style});
// insert custom attribute ex dbgHref="../foo.css" usefull when debugging in DOM inspectors, no?
if(style && djConfig.isDebug){
style.setAttribute("dbgHref", URI);
}
return style; // HTMLStyleElement
}
dojo.html.insertCssText = function(/* string */cssStr, /* HTMLDocument? */doc, /* string? */URI){
// summary
// Attempt to insert CSS rules into the document through inserting a style element
// DomNode Style = insertCssText(String ".dojoMenu {color: green;}"[, DomDoc document, dojo.uri.Uri Url ])
if(!cssStr){
return; // HTMLStyleElement
}
if(!doc){ doc = document; }
if(URI){// fix paths in cssStr
cssStr = dojo.html.fixPathsInCssText(cssStr, URI);
}
var style = doc.createElement("style");
style.setAttribute("type", "text/css");
// IE is b0rken enough to require that we add the element to the doc
// before changing it's properties
var head = doc.getElementsByTagName("head")[0];
if(!head){ // must have a head tag
dojo.debug("No head tag in document, aborting styles");
return; // HTMLStyleElement
}else{
head.appendChild(style);
}
if(style.styleSheet){// IE
var setFunc = function(){
try{
style.styleSheet.cssText = cssStr;
}catch(e){ dojo.debug(e); }
};
if(style.styleSheet.disabled){
setTimeout(setFunc, 10);
}else{
setFunc();
}
}else{ // w3c
var cssText = doc.createTextNode(cssStr);
style.appendChild(cssText);
}
return style; // HTMLStyleElement
}
dojo.html.fixPathsInCssText = function(/* string */cssStr, /* string */URI){
// summary
// usage: cssText comes from dojoroot/src/widget/templates/Foobar.css
// it has .dojoFoo { background-image: url(images/bar.png);} then uri should point to dojoroot/src/widget/templates/
if(!cssStr || !URI){ return; }
var match, str = "", url = "", urlChrs = "[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=&?~]+";
var regex = new RegExp('url\\(\\s*('+urlChrs+')\\s*\\)');
var regexProtocol = /(file|https?|ftps?):\/\//;
regexTrim = new RegExp("^[\\s]*(['\"]?)("+urlChrs+")\\1[\\s]*?$");
if(dojo.render.html.ie55 || dojo.render.html.ie60){
var regexIe = new RegExp("AlphaImageLoader\\((.*)src\=['\"]("+urlChrs+")['\"]");
// TODO: need to decide how to handle relative paths and AlphaImageLoader see #1441
// current implementation breaks on build with intern_strings
while(match = regexIe.exec(cssStr)){
url = match[2].replace(regexTrim, "$2");
if(!regexProtocol.exec(url)){
url = (new dojo.uri.Uri(URI, url).toString());
}
str += cssStr.substring(0, match.index) + "AlphaImageLoader(" + match[1] + "src='" + url + "'";
cssStr = cssStr.substr(match.index + match[0].length);
}
cssStr = str + cssStr;
str = "";
}
while(match = regex.exec(cssStr)){
url = match[1].replace(regexTrim, "$2");
if(!regexProtocol.exec(url)){
url = (new dojo.uri.Uri(URI, url).toString());
}
str += cssStr.substring(0, match.index) + "url(" + url + ")";
cssStr = cssStr.substr(match.index + match[0].length);
}
return str + cssStr; // string
}
dojo.html.setActiveStyleSheet = function(/* string */title){
// summary
// Activate style sheet with specified title.
var i = 0, a, els = dojo.doc().getElementsByTagName("link");
while (a = els[i++]) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")){
a.disabled = true;
if (a.getAttribute("title") == title) { a.disabled = false; }
}
}
}
dojo.html.getActiveStyleSheet = function(){
// summary
// return the title of the currently active stylesheet
var i = 0, a, els = dojo.doc().getElementsByTagName("link");
while (a = els[i++]) {
if (a.getAttribute("rel").indexOf("style") != -1
&& a.getAttribute("title")
&& !a.disabled
){
return a.getAttribute("title"); // string
}
}
return null; // string
}
dojo.html.getPreferredStyleSheet = function(){
// summary
// Return the preferred stylesheet title (i.e. link without alt attribute)
var i = 0, a, els = dojo.doc().getElementsByTagName("link");
while (a = els[i++]) {
if(a.getAttribute("rel").indexOf("style") != -1
&& a.getAttribute("rel").indexOf("alt") == -1
&& a.getAttribute("title")
){
return a.getAttribute("title"); // string
}
}
return null; // string
}
dojo.html.applyBrowserClass = function(/* HTMLElement */node){
// summary
// Applies pre-set class names based on browser & version to the passed node.
// Modified version of Morris' CSS hack.
var drh=dojo.render.html;
var classes = {
dj_ie: drh.ie,
dj_ie55: drh.ie55,
dj_ie6: drh.ie60,
dj_ie7: drh.ie70,
dj_iequirks: drh.ie && drh.quirks,
dj_opera: drh.opera,
dj_opera8: drh.opera && (Math.floor(dojo.render.version)==8),
dj_opera9: drh.opera && (Math.floor(dojo.render.version)==9),
dj_khtml: drh.khtml,
dj_safari: drh.safari,
dj_gecko: drh.mozilla
}; // no dojo unsupported browsers
for(var p in classes){
if(classes[p]){
dojo.html.addClass(node, p);
}
}
};
mercredi 6 octobre 2010
java : weblogic script commandes via API console
Voici un résumé des commandes weblogic (lorsque l'on fonctionne en mode managé et que le serveur d'administration serveurAdmin est lancé)
java weblogic.Admin -url monNomDeServeur:11131 -username weblogic -password secret ALL
Voici, un Arret forcé sans attente des déconnexion des users (par opposition au gracefull shutdown)
java weblogic.Admin -url monNomDeServeur:11131 -username weblogic -password secret FORCESHUTDOWN valo
Voici le lancement d'une commande START à un serveur "serveurAdmin" pour démarrer un serveur nommé "monNomDeServeur"
java weblogic.Admin -url monNomDeServeur:11131 -username weblogic -password secret START valo
Une autre méthode qui passe par le node manager,et est parfois utilisée mais ne fonctionne pas bien
java -Dweblogic.Name=bocorchestre -Dweblogic.management.server.url=cronos:11131 weblogic.Server >/var/TRACES/wlsbod3/bocorchestre.log &
Usage: java [] weblogic.Admin
[ [-url | -adminurl] [://]:]
-username [-password ]
Where commands and arguments are:
********** Managing the Server Life Cycle **********
UNLOCK
RESUME []
FORCESHUTDOWN []
SHUTDOWN [-ignoreExistingSessions] [-timeout] []
OR
(Deprecated) SHUTDOWN [ [""]] []
LOCK [""]
START
(Deprecated) STARTINSTANDBY
DISCOVERMANAGEDSERVER [-serverName [-listenPort ] [-listenAddress ] [-listenPortSecure]]
********** Retrieving Information about WebLogic Server **********
GETSTATE []
HELP []
CONNECT []
LICENSES
LIST []
PING [] []
THREAD_DUMP
VERSION
SERVERLOG [ []]
********** Working with JDBC Connection Pools **********
SUSPEND_POOL -poolName
(Deprecated) DISABLE_POOL -poolName [true | false]
RESET_POOL -poolName
CREATE_POOL
(Deprecated) DESTROY_POOL [true | false]
SHUTDOWN_POOL -poolName
RESUME_POOL -poolName
TEST_POOL -poolName
EXISTS_POOL -poolName
(Deprecated) ENABLE_POOL -poolName
DELETE_POOL -poolName
********** Managing WebLogic Server MBeans **********
GET [-pretty] {-type|-mbean } [-property ]...
CREATE {-name -type } | {-mbean }
INVOKE {-type|-mbean }
-method [...]
BATCHUPDATE -batchFile [-continueOnError] [-batchCmdVerbose]
DELETE {-type | -mbean }
QUERY [-pretty] -pattern
SET {-type|-mbean } [-property []]...
********** Working with Clusters **********
VALIDATECLUSTERCONFIG -configPath
CLUSTERSTATE -clusterName
STOPCLUSTER -clusterName
MIGRATE [-jta] -migratabletarget { | } -destination [-sourcedown] [-destinationdown]
STARTCLUSTER -clusterName
********** Managing the Admin Configuration **********
STOREUSERCONFIG -username -password [-userconfigfile ] [-userkeyfile ]**************** SSL Trust Options **************** If the domain-wide administration port is enabled, or if you are connecting to a server through some other SSL port, you might need to include Java options to indicate which host the weblogic.Admin utility trusts. For example, if the server to which you are connecting is using the demonstration SSL keys and certificates, you must include the TrustKeyStore option as follows: java -Dweblogic.security.TrustKeyStore=DemoTrust weblogic.Admin [<...>] For more information, refer to the WebLogic Server security documentation.
java weblogic.Admin -url monNomDeServeur:11131 -username weblogic -password secret ALL
Voici, un Arret forcé sans attente des déconnexion des users (par opposition au gracefull shutdown)
java weblogic.Admin -url monNomDeServeur:11131 -username weblogic -password secret FORCESHUTDOWN valo
Voici le lancement d'une commande START à un serveur "serveurAdmin" pour démarrer un serveur nommé "monNomDeServeur"
java weblogic.Admin -url monNomDeServeur:11131 -username weblogic -password secret START valo
Une autre méthode qui passe par le node manager,et est parfois utilisée mais ne fonctionne pas bien
java -Dweblogic.Name=bocorchestre -Dweblogic.management.server.url=cronos:11131 weblogic.Server >/var/TRACES/wlsbod3/bocorchestre.log &
Usage: java [
[ [-url | -adminurl] [
-username
Where commands and arguments are:
********** Managing the Server Life Cycle **********
UNLOCK
RESUME [
FORCESHUTDOWN [
SHUTDOWN [-ignoreExistingSessions] [-timeout
OR
(Deprecated) SHUTDOWN [
LOCK ["
START
(Deprecated) STARTINSTANDBY
DISCOVERMANAGEDSERVER [-serverName
********** Retrieving Information about WebLogic Server **********
GETSTATE [
HELP [
CONNECT [
LICENSES
LIST [
PING [
THREAD_DUMP
VERSION
SERVERLOG [
********** Working with JDBC Connection Pools **********
SUSPEND_POOL -poolName
(Deprecated) DISABLE_POOL -poolName
RESET_POOL -poolName
CREATE_POOL
(Deprecated) DESTROY_POOL
SHUTDOWN_POOL -poolName
RESUME_POOL -poolName
TEST_POOL -poolName
EXISTS_POOL -poolName
(Deprecated) ENABLE_POOL -poolName
DELETE_POOL -poolName
********** Managing WebLogic Server MBeans **********
GET [-pretty] {-type
CREATE {-name
INVOKE {-type
-method
BATCHUPDATE -batchFile
DELETE {-type
QUERY [-pretty] -pattern
SET {-type
********** Working with Clusters **********
VALIDATECLUSTERCONFIG -configPath
CLUSTERSTATE -clusterName
STOPCLUSTER -clusterName
MIGRATE [-jta] -migratabletarget {
STARTCLUSTER -clusterName
********** Managing the Admin Configuration **********
STOREUSERCONFIG -username
mardi 5 octobre 2010
javascript : petits et divers exemples
<script type="text/javascript" language="javascript">
function etatModifie(obj, numLigne){
obj.className = "CelluleLineModifiee";
document.getElementById("boutonModifier_" + numLigne).src = "img/gif/ico_enregistrer_on.gif";
document.getElementById("boutonModifier_" + numLigne).className = 'boutonActive';
/* document.getElementById("boutonModifier_" + numLigne).onclick=function() {
document.forms[0].dispatch.value = "onModifier";
args = createArgsArrayModification(document.forms[0], numLigne);
sendRequest("/bocreferentiel/accueilReferentiel.do", args);
};*/
document.getElementById("modifiee_" + numLigne).value = '1';
}
function etatModifieVerifDate(obj, numLigne){
var ok
if(obj.value == "") {
ok = 1;
}
else {
ok = CheckDate(obj);
}
if(ok == 1) {
if(numLigne != -1) {
obj.className = "CelluleLineModifiee";
document.getElementById("boutonModifier_" + numLigne).src = "img/gif/ico_enregistrer_on.gif";
document.getElementById("boutonModifier_" + numLigne).className = 'boutonActive';
document.getElementById("modifiee_" + numLigne).value = '1';
}
/*document.getElementById("boutonModifier_" + numLigne).onclick=function() {
document.forms[0].dispatch.value = "onModifier";
args = createArgsArrayModification(document.forms[0], numLigne);
sendRequest("/bocreferentiel/accueilReferentiel.do", args);
};*/
}
else {
if(numLigne != -1) {
obj.className = "CelluleErronee";
document.getElementById("boutonModifier_" + numLigne).src = "img/gif/ico_enregistrer_off.gif";
document.getElementById("boutonModifier_" + numLigne).className = 'boutonDesactive';
document.getElementById("modifiee_" + numLigne).value = '0';
}
else {
obj.className = "CelluleNewErronee";
}
}
}
function openPopup(url, popW, popH){
var winleft = (screen.width - popW) / 2;
var winUp = (screen.height - popH) / 2;
popup = window.open(url, '1', 'toolbar=0,location=0,status=0,menubar=0,scrollbars=0,resizable=1,width='+popW+',height='+popH+',left='+winleft+',top='+winUp);
popup.resizeTo(popW,popH);
popup.focus();
}
function log(){
document.forms[0].dispatch.value = "onValider";
document.forms[0].submit();
return false;
}
function majChamps(){
if(document.getElementById("champs") != null) {
var str = "";
var strChoix = document.getElementById("choix").value;
var i = 0;
if(strChoix == "ReseauDium") {
if( "Réseau Ferroviaire" != "") {
i++;
str = str + ' Réseau Ferroviaire : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "ReseauDium") {
if( "Libellé" != "") {
i++;
str = str + ' Libellé : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "ReseauDium") {
if( "Date de validité" != "") {
i++;
str = str + ' Date de validité : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "ReseauDium") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "GaresDium") {
if( "Réseau Ferroviaire" != "") {
i++;
str = str + ' Réseau Ferroviaire : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "GaresDium") {
if( "Code Gare" != "") {
i++;
str = str + ' Code Gare : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "GaresDium") {
if( "Libellé" != "") {
i++;
str = str + ' Libellé : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "GaresDium") {
if( "Zone géographique" != "") {
i++;
str = str + ' Zone géographique : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "GaresDium") {
if( "Date de validité" != "") {
i++;
str = str + ' Date de validité : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "GaresDium") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "PtsFront") {
if( "Réseau Ferroviaire" != "") {
i++;
str = str + ' Réseau Ferroviaire : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "PtsFront") {
if( "Point Frontière" != "") {
i++;
str = str + ' Point Frontière : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "PtsFront") {
if( "Libellé" != "") {
i++;
str = str + ' Libellé : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "PtsFront") {
if( "Zone géographique" != "") {
i++;
str = str + ' Zone géographique : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "PtsFront") {
if( "Date de validité" != "") {
i++;
str = str + ' Date de validité : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "PtsFront") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistGares") {
if( "Réseau Ferroviaire Gare" != "") {
i++;
str = str + ' Réseau Ferroviaire Gare : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistGares") {
if( "Gare" != "") {
i++;
str = str + ' Gare : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistGares") {
if( "Réseau Ferroviaire PF" != "") {
i++;
str = str + ' Réseau Ferroviaire PF : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistGares") {
if( "PF" != "") {
i++;
str = str + ' PF : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistGares") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistGares") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistGares") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistGares") {
if( "Date de validité" != "") {
i++;
str = str + ' Date de validité : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistGares") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistPF") {
if( "Réseau Ferroviaire Entrant" != "") {
i++;
str = str + ' Réseau Ferroviaire Entrant : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistPF") {
if( "PF Entrant" != "") {
i++;
str = str + ' PF Entrant : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistPF") {
if( "Réseau Ferroviaire Sortant" != "") {
i++;
str = str + ' Réseau Ferroviaire Sortant : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistPF") {
if( "PF Sortant" != "") {
i++;
str = str + ' PF Sortant : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistPF") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistPF") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistPF") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistPF") {
if( "Date de validité" != "") {
i++;
str = str + ' Date de validité : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistPF") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatAddi") {
if( "Etablissement Ferroviaire" != "") {
i++;
str = str + ' Etablissement Ferroviaire : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatAddi") {
if( "Lieu" != "") {
i++;
str = str + ' Lieu : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatAddi") {
if( "Distance" != "") {
i++;
str = str + ' Distance : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatAddi") {
if( "GRF" != "") {
i++;
str = str + ' GRF : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatAddi") {
if( "Date de validité" != "") {
i++;
str = str + ' Date de validité : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatAddi") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatGrf") {
if( "GRF 1" != "") {
i++;
str = str + ' GRF 1 : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatGrf") {
if( "GRF 2" != "") {
i++;
str = str + ' GRF 2 : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatGrf") {
if( "Distance" != "") {
i++;
str = str + ' Distance : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatGrf") {
if( "Date de validité" != "") {
i++;
str = str + ' Date de validité : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
if(strChoix == "DistNatGrf") {
if( "" != "") {
i++;
str = str + ' : <input type="text" name="input' + i + '"/> ';
}
else {
i++;
str = str + '<input type="hidden" name="input' + i + '" value="">';
}
}
document.getElementById("champs").innerHTML = str;
}
return false;
}
function makeRequest(type) {
if(type == 'recherche') {
// mise à jour de la variable contenant le type de donnée actuellement affiché
document.forms[0].typeDonneesAffichees.value = document.forms[0].choix.value;
document.forms[0].dispatch.value = "onValider";
args = createArgsArrayRecherche(document.forms[0]);
sendRequest("/bocreferentiel/accueilReferentiel.do", args);
}
else if(type == 'ajout') {
document.forms[0].dispatch.value = "onAjouter";
args = createArgsArrayAjout(document.forms[0]);
sendRequest("/bocreferentiel/accueilReferentiel.do", args);
}
}
function makeRequestAjout() {
document.forms[0].dispatch.value = "onAjouter";
args = createArgsArrayAjout(document.forms[0]);
sendRequest("/bocreferentiel/accueilReferentiel.do", args);
}
function makeRequestModification(ligne) {
if(document.getElementById("modifiee_" + ligne).value == '1') {
document.forms[0].dispatch.value = "onModifier";
args = createArgsArrayModification(document.forms[0], ligne);
sendRequest("/bocreferentiel/accueilReferentiel.do", args);
}
}
function makeRequestSuppression(ligne) {
document.forms[0].dispatch.value = "onSupprimer";
args = createArgsArrayModification(document.forms[0], ligne);
sendRequest("/bocreferentiel/accueilReferentiel.do", args);
}
function CheckDate(d) {
// Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
// Le séparateur est défini dans la variable separateur
if(d.value != null && d.value != "") {
var amin=1980; // année mini
var amax=2099; // année maxi
var separateur="/"; // separateur entre jour/mois/annee
var j=(d.value.substring(0,2));
var m=(d.value.substring(3,5));
var a=(d.value.substring(6));
var ok=1;
if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
alert("Le jour n'est pas correct, date non valide.\nEntrez une date valide ou supprimez cette valeur avant de poursuivre."); ok=0;
}
if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
alert("Le mois n'est pas correct, date non valide.\nEntrez une date valide ou supprimez cette valeur avant de poursuivre."); ok=0;
}
if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) {
alert("L'année n'est pas correcte, date non valide.\nEntrez une date valide ou supprimez cette valeur avant de poursuivre."); ok=0;
}
if ( ((d.value.substring(2,3)!=separateur)||(d.value.substring(5,6)!=separateur)) && (ok==1) ) {
alert("Les séparateurs doivent être des "+separateur+".\nEntrez une date valide ou supprimez cette valeur avant de poursuivre."); ok=0;
}
if (ok==1) {
var d2=new Date(a,m-1,j);
j2=d2.getDate();
m2=d2.getMonth()+1;
a2=d2.getFullYear();
if (a2<=100) {a2=1900+a2}
if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
alert("La date "+d.value+" n'existe pas.\nEntrez une date valide ou supprimez cette valeur avant de poursuivre.");
ok=0;
}
}
return ok;
}
}
function CheckDateFocus(d) {
// Cette fonction donne le focus à l'input d si la date qu'il contient n'est
// pas valide
// Le séparateur est défini dans la variable separateur
if(d.value != null && d.value != "") {
var amin=1980; // année mini
var amax=2099; // année maxi
var separateur="/"; // separateur entre jour/mois/annee
var j=(d.value.substring(0,2));
var m=(d.value.substring(3,5));
var a=(d.value.substring(6));
var ok=1;
if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
ok=0;
}
if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
ok=0;
}
if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) {
ok=0;
}
if ( ((d.value.substring(2,3)!=separateur)||(d.value.substring(5,6)!=separateur)) && (ok==1) ) {
ok=0;
}
if (ok==1) {
var d2=new Date(a,m-1,j);
j2=d2.getDate();
m2=d2.getMonth()+1;
a2=d2.getFullYear();
if (a2<=100) {a2=1900+a2}
if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
ok=0;
}
}
if (ok == 0) {
alert("Date invalide. Entrez une date valide ou supprimez cetta valeur avant de poursuivre.");
d.focus();
}
return ok;
}
}
</script>
web : faire des onglets en HTML
Pour faire des onglets, il est possible d'utiliser une solution simple (mais non recommandée car vaut mieux tout faire en CSS) à base de tableau
Voici un exemple :
Voici un exemple :
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="borderTableContent">
<tr>
<td align="center" class="selectedTxtIntitule" width="25%">
<a href="/monAppli/distancierDIUMRecherche.do?dispatch=onInit" onclick="showLoadingDiv();" class="lkBoutonWhite">Visualisation DIUM</a>
</td>
<td>
<img src="img/gif/line_separator_bt.gif" alt="" height="25" width="1" />
</td>
<td align="center" class="txtIntitule" width="25%">
<a href="/monAppli/distancierDIUM.do?dispatch=onInit" onclick="showLoadingDiv();" class="lkBouton">Chargement DIUM</a>
</td>
<td>
<img src="img/gif/line_separator_bt.gif" alt="" height="25" width="1" />
</td>
<td align="center" class="txtIntitule" width="25%">
<a href="/monAppli/distancierNationalRecherche.do?dispatch=onInit" onclick="showLoadingDiv();" class="lkBouton">Visualisation Distancier National</a>
</td>
<td>
<img src="img/gif/line_separator_bt.gif" alt="" height="25" width="1" />
</td>
<td align="center" class="txtIntitule" width="25%">
<a href="/monAppli/distancierNational.do?dispatch=onInit" onclick="showLoadingDiv();" class="lkBouton">Chargement Distancier National</a>
</td>
</tr>
</table>
vendredi 1 octobre 2010
unix / linux : commandes scp
Voici, un petit rappel de la commande scp :
scp index.jsp enwoo@cronos:/dev/bo/8
Voici un petit rappel pour ssh :
ssh enwoo@cronos
scp index.jsp enwoo@cronos:/dev/bo/8
Voici un petit rappel pour ssh :
ssh enwoo@cronos
java : JVM 32 bits et 64 bits
Voici un extrait d'une conversation d'expert sur les JVMs 32 bits et 64 bits ...
L'intérêt d'une JVM 64-bits est uniquement de pouvoir manipuler plus de mémoire, donc d'avoir un paramètre -Xmx beaucoup plus gros qu'une JVM 32-bits.
La plus part des JVM 32-bits ne peuvent pas dépasser 3,5 Go de Xmx et c'est beaucoup moins pour certaines implémentations.
Aujourd'hui la plus part des applications Web tournent sur des JVM 32-bits et c'est largement suffisant : une application Web bien codé tourne très bien un JVM de 1 Go tout en traitant plusieurs sessions utilisateurs. Si vous avez plus d'utilisateurs que prévu alors vous devrez déployer d'autre JVM de 1 Go avec la même application et mettre en place un sytème de load-balancing (c'est ce qu'on appelle la "scalabilité").
Attention, il ne faut pas confondre les bits de la JVM et les bits de l'OS : plusieurs JVM 32-bits tournant sur un OS 64-bits est une architecture très répendue.
Qui dit plus de mémoire dit des garbage collector plus longs à réaliser,
Qui dit pointeur de 64-bits dit plus de mémoire à manipuler pour la même quantité d'information métier.
Donc un JVM 64-bits avec un -Xmx10g sera beaucoup plus lente "globalement" qu'une JVM 32-bits avec un -Xmx1g.
Une JVM 64-bits est bien adapté à un batch qui par conception doit manipuler un très gros volume de données en mémoire.
Une JVM 64-bits est aussi un paliatif à une application Web mal conçue (cas par exemple de caches mémoires trop gros ou non limités).
Inscription à :
Articles (Atom)