📄 decodecasefragment.java
字号:
//$Id: DecodeCaseFragment.java,v 1.5.2.5 2003/11/27 16:10:00 oneovthafew Exp $package net.sf.hibernate.sql;import java.util.Iterator;import java.util.Map;import net.sf.hibernate.util.StringHelper;import org.apache.commons.collections.SequencedHashMap;/** An Oracle-style DECODE function. <br> <code>decode(pkvalue, key1, 1, key2, 2, ..., 0)</code> <br> @author Simon Harris */public class DecodeCaseFragment extends CaseFragment { private String returnColumnName; private Map cases = new SequencedHashMap(); public CaseFragment setReturnColumnName(String returnColumnName) { this.returnColumnName = returnColumnName; return this; } public CaseFragment setReturnColumnName(String returnColumnName, String suffix) { return setReturnColumnName( new Alias(suffix).toAliasString(returnColumnName) ); } public CaseFragment addWhenColumnNotNull(String alias, String columnName, String value) { cases.put( StringHelper.qualify(alias, columnName), value ); return this; } public String toFragmentString() { StringBuffer buf = new StringBuffer( cases.size() * 15 + 10 ); Iterator iter = cases.entrySet().iterator(); while ( iter.hasNext() ) { Map.Entry me = (Map.Entry) iter.next(); if ( "0".equals( me.getValue() ) ) { buf.insert( 0, me.getKey() ); } else { buf.append(", ") .append( me.getKey() ) .append(", ") .append( me.getValue() ); } } buf.insert(0, "decode (").append(",0 )"); if (returnColumnName!=null) { buf.append(" as ") .append(returnColumnName); } return buf.toString(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -