/* * Copyright (c) 2010 Mysema Ltd. * All rights reserved. * */ package com.mysema.rdfbean.query; import java.util.Calendar; import org.joda.time.DateTime; import com.google.common.base.Strings; import com.mysema.converters.DateTimeConverter; /** * @author tiwe */ public final class QueryFunctions { private static final DateTimeConverter dateTime = new DateTimeConverter(); public static int dayOfMonth(String str) { return dateTime.fromString(str).getDayOfMonth(); } public static int dayOfWeek(String str) { int dow = dateTime.fromString(str).getDayOfWeek(); return dow == 7 ? 1 : dow + 1; } public static int dayOfYear(String str) { return dateTime.fromString(str).getDayOfYear(); } public static double ceil(String str) { return Math.ceil(Double.valueOf(str)); } public static double floor(String str) { return Math.floor(Double.valueOf(str)); } public static int hour(String str) { return dateTime.fromString(str).getHourOfDay(); } public static boolean like(String str, String likeExpression) { String regex = likeExpression.replace("%", ".*").replaceAll("_", "."); return str.matches(regex); } public static int millisecond(String str) { return dateTime.fromString(str).getMillisOfSecond(); } public static int minute(String str) { return dateTime.fromString(str).getMinuteOfHour(); } public static int month(String str) { return dateTime.fromString(str).getMonthOfYear(); } public static int second(String str) { return dateTime.fromString(str).getSecondOfMinute(); } public static String space(int amount) { return Strings.repeat(" ", amount); } public static double sqrt(String str) { return Math.sqrt(Double.valueOf(str)); } public static int week(String str) { return dateTime.fromString(str).toGregorianCalendar().get(Calendar.WEEK_OF_YEAR); } public static int year(String str) { return dateTime.fromString(str).getYear(); } public static int yearMonth(String str) { DateTime date = dateTime.fromString(str); return date.getYear() * 100 + date.getMonthOfYear(); } private QueryFunctions() { } }