|  |  |  | @ -19,6 +19,7 @@ | 
			
		
	
		
			
				
					|  |  |  |  |  */ | 
			
		
	
		
			
				
					|  |  |  |  | package org.airsonic.player.dao; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import org.apache.commons.lang.StringUtils; | 
			
		
	
		
			
				
					|  |  |  |  | import org.slf4j.Logger; | 
			
		
	
		
			
				
					|  |  |  |  | import org.slf4j.LoggerFactory; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
			
		
	
	
		
			
				
					|  |  |  | @ -26,6 +27,7 @@ import org.springframework.jdbc.core.JdbcTemplate; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.jdbc.core.RowMapper; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.Arrays; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.Date; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.List; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.Map; | 
			
		
	
	
		
			
				
					|  |  |  | @ -58,26 +60,14 @@ public class AbstractDao { | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     protected String questionMarks(String columns) { | 
			
		
	
		
			
				
					|  |  |  |  |         int count = columns.split(", ").length; | 
			
		
	
		
			
				
					|  |  |  |  |         StringBuilder builder = new StringBuilder(); | 
			
		
	
		
			
				
					|  |  |  |  |         for (int i = 0; i < count; i++) { | 
			
		
	
		
			
				
					|  |  |  |  |             builder.append('?'); | 
			
		
	
		
			
				
					|  |  |  |  |             if (i < count - 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                 builder.append(", "); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         return builder.toString(); | 
			
		
	
		
			
				
					|  |  |  |  |        int numberOfColumns =  StringUtils.countMatches(columns, ",") + 1; | 
			
		
	
		
			
				
					|  |  |  |  |        return StringUtils.repeat("?", ", ", numberOfColumns); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     protected String prefix(String columns, String prefix) { | 
			
		
	
		
			
				
					|  |  |  |  |         StringBuilder builder = new StringBuilder(); | 
			
		
	
		
			
				
					|  |  |  |  |         for (String s : columns.split(", ")) { | 
			
		
	
		
			
				
					|  |  |  |  |             builder.append(prefix).append(".").append(s).append(","); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         if (builder.length() > 0) { | 
			
		
	
		
			
				
					|  |  |  |  |             builder.setLength(builder.length() - 1); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         return builder.toString(); | 
			
		
	
		
			
				
					|  |  |  |  |         List<String> l = Arrays.asList(columns.split(", ")); | 
			
		
	
		
			
				
					|  |  |  |  |         l.replaceAll(s -> prefix + "." + s); | 
			
		
	
		
			
				
					|  |  |  |  |         return String.join(", ", l); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     protected int update(String sql, Object... args) { | 
			
		
	
	
		
			
				
					|  |  |  | 
 |