001 /* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016 package org.opengion.hayabusa.remote; 017 018 import java.util.Map; 019 020 import org.opengion.fukurou.util.StringUtil; 021 import org.opengion.hayabusa.resource.ResourceFactory; 022 import org.opengion.hayabusa.resource.ResourceManager; 023 024 /** 025 * RemoteControllableインタフェイスを実?? 026 * サーブレ?経由で?リソース更新を行うためのクラスです? 027 * 028 * POSTキーとしてcommandとCLM、langが?です? 029 * commandは更新リソースの種別(COLUMN,LABEL,CODE,GUI) 030 * CLMはCLM値をカンマで区?たCSV形? 031 * langは更新対象の??例:ja)です? 032 * 詳しくはremoteControlメソ?のJavaDocをご覧下さ?? 033 * 034 * @og.rev 4.1.0.0 (2007/12/20) 新規作? 035 * 036 * @version 4.1 037 * @author Masakazu Takahashi 038 * @since JDK6.0, 039 * 040 */ 041 public class ClearResource implements RemoteControllable { 042 /** 043 * RemoteControllableインタフェイスの実?ソ?です? 044 * ClearResourceでは受け取ったパラメータによってコン?スト?リソースの再読込をします? 045 * 046 * POSTキーとして受け取るキーと値は次の通りとなりま? 047 * <table border="1" frame="box" rules="all" > 048 * <caption>POSTキーとして受け取るキーと値</caption> 049 * <tr><th>キー </th><th>? </th><th>値 </th></tr> 050 * <tr><td>command </td><td>更新種別 </td><td>COLUMN,LABEL,CODE,GUI </td></tr> 051 * <tr><td>lang </td><td>?? </td><td>更新リソースの?? </td></tr> 052 * <tr><td>CLM </td><td>更新キー </td><td>キーカラ?","で区?たCSV形?/td></tr> 053 * </table> 054 * 055 * 動作?command == "GUI"の場合とそれ以外?場合に?れます? 056 * ?、リソースの更新はResourceManagerのメソ?を利用する部??共通です? 057 * こ?時?langによって更新対象の?を選択しま?nullの場合?ja) 058 * ?ommand?GUI"の場? 059 * ?面リソースを更新する場合?command="GUI"で渡します? 060 * ?UIに限ってCLMパラメータは不要です? 061 * ?esourceManager.guiClear()がコールされて画面リソースがクリアされます? 062 * ?同時に画面リソースのラベルリソースも?読込しま? 063 * ②command?GUI"以外?場? 064 * ?ommand?GUI"以外?場合?動作?どれも同じです? 065 * ?け取ったCLMパラメータをCSV?し?ループで回して 066 * ?esourceManager.clear(key)をコールします? 067 * ? 068 * 返す値は XML形式???です? 069 * <clear-resource> 070 * <command>command引数</command> 071 * <lang>lang引数</lang> 072 * <keys> 073 * <key>CLM引数の更新キー??lt;/key> 074 * <key>CLM引数の更新キー??lt;/key> 075 * ... 076 * </keys> 077 * </clear-resource> 078 * となります? 079 * 080 * @param valMap サーブレ?が受け取ったキーと値のマッ? 081 * 082 * @return XML形式?実行結果 083 */ 084 public String remoteControl( final Map<String,String> valMap ) { 085 String command = valMap.get( "command" ); 086 String clms = valMap.get( "CLM" ); 087 String lang = valMap.get( "lang" ); 088 ResourceManager rscM = ResourceFactory.newInstance( lang ); 089 090 StringBuilder rtnStr = new StringBuilder(); 091 rtnStr.append( "<clear-resource>" ); 092 rtnStr.append( " <command>" ).append( command ).append( "</command>" ); 093 rtnStr.append( " <lang>" ).append( lang ).append( "</lang>" ); 094 rtnStr.append( " <keys>" ); 095 096 if( "GUI".equals(command) ) { 097 rscM.guiClear(); 098 rtnStr.append( " <key>").append( clms ).append( "</key>" ); 099 } 100 else { 101 String[] vals = StringUtil.csv2Array( clms ); 102 for( int i = 0; i < vals.length; i++ ) { 103 rscM.clear( vals[i] ); 104 rtnStr.append( " <key>" ).append( vals[i] ).append( "</key>" ); 105 } 106 } 107 108 rtnStr.append( " </keys>" ); 109 rtnStr.append( "</clear-resource>" ); 110 return rtnStr.toString(); 111 } 112 }