c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

LTSV toString for Java

Labeled Tab-separated Values (LTSV)Javaを探した。
あのさあ……。Apacheとか洞うでも好いからさあ (Tomcat特有の傲慢)。

書いた。

因みにC# (.NET) のは昔書いた。
cf. C# でLTSVを壊したり組み立てたりするの書いた http://c4se.hatenablog.com/entry/2013/02/09/003554
cf. 極めて愚かな事をしていたLTSV .NETを更新した (class名を変更した) http://c4se.hatenablog.com/entry/2013/02/24/035011

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import lombok.val;

/**
 * Labeled Tab-separated Values (LTSV) http://ltsv.org/
 * 
 * License: Public Domain
 * 
 * @author ne_Sachirou
 */
public class Ltsv implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 5281168493052765519L;

	private Map<String, String> record = new HashMap<>();

	/**
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	public Ltsv put(String key, Object value) {
		record.put(key, value.toString());
		return this;
	}

	/**
	 * 
	 * @param externalMap
	 * @return
	 */
	public Ltsv append(Map<String, Object> externalMap) {
		for (val entry : externalMap.entrySet())
			put(entry.getKey(), entry.getValue());
		return this;
	}

	/**
	 * 
	 */
	@Override
	public String toString() {
		StringBuffer buffer = new StringBuffer();
		for (val entry : record.entrySet()) {
			val key = entry.getKey().replaceAll("[^0-9A-Za-z_.-]", "_").trim();
			val value = entry.getValue().toString()
					.replaceAll("[:\t\n\r]", " ").trim();
			buffer.append(key + ":" + value + "\t");
		}
		return buffer.substring(0, buffer.length() - 1);
	}
}

memo

cf. ApacheログをLTSV形式にする際の2つの落とし穴と対処法+Apache&FluentdのLTSV設定サンプル - Y-Ken Studio http://y-ken.hatenablog.com/entry/apache-tips-ltsv-access-log
cf. ServletRequest (Java EE 6 ) http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html
cf. ServletResponse (Java EE 6 ) http://docs.oracle.com/javaee/6/api/javax/servlet/ServletResponse.html