OCLExpressions.java

  1. package org.andromda.translation.ocl.validation;

  2. import org.apache.commons.lang.BooleanUtils;


  3. /**
  4.  * Used to translate OCL expressions to their corresponding Java expressions.
  5.  */
  6. public final class OCLExpressions
  7. {
  8.     /**
  9.      * @param first
  10.      * @param second
  11.      * @return first.equals(second)
  12.      */
  13.     public static boolean equal(
  14.             final Object first,
  15.             final Object second)
  16.     {
  17.         return (first == null) ? (second == null) : first.equals(second);
  18.     }

  19.     /**
  20.      * @param first
  21.      * @param second
  22.      * @return first == second
  23.      */
  24.     public static boolean equal(
  25.             final boolean first,
  26.             final boolean second)
  27.     {
  28.         return first == second;
  29.     }

  30.     /**
  31.      * @param first
  32.      * @param second
  33.      * @return first == second
  34.      */
  35.     public static boolean equal(
  36.             final int first,
  37.             final int second)
  38.     {
  39.         return first == second;
  40.     }

  41.     /**
  42.      * @param first
  43.      * @param second
  44.      * @return first == second
  45.      */
  46.     public static boolean equal(
  47.             final short first,
  48.             final short second)
  49.     {
  50.         return first == second;
  51.     }

  52.     /**
  53.      * @param first
  54.      * @param second
  55.      * @return first == second
  56.      */
  57.     public static boolean equal(
  58.             final byte first,
  59.             final byte second)
  60.     {
  61.         return first == second;
  62.     }

  63.     /**
  64.      * @param first
  65.      * @param second
  66.      * @return first == second
  67.      */
  68.     public static boolean equal(
  69.             final char first,
  70.             final char second)
  71.     {
  72.         return first == second;
  73.     }

  74.     /**
  75.      * @param first
  76.      * @param second
  77.      * @return first == second
  78.      */
  79.     public static boolean equal(
  80.             final float first,
  81.             final float second)
  82.     {
  83.         return first == second;
  84.     }

  85.     /**
  86.      * @param first
  87.      * @param second
  88.      * @return first == second
  89.      */
  90.     public static boolean equal(
  91.             final double first,
  92.             final double second)
  93.     {
  94.         return first == second;
  95.     }

  96.     /**
  97.      * @param first
  98.      * @param second
  99.      * @return first == second
  100.      */
  101.     public static boolean equal(
  102.             final long first,
  103.             final long second)
  104.     {
  105.         return first == second;
  106.     }

  107.     /**
  108.      * @param first
  109.      * @param second
  110.      * @return first == second
  111.      */
  112.     public static boolean equal(
  113.             final Object first,
  114.             final boolean second)
  115.     {
  116.         return (second) ? Boolean.TRUE.equals(first) || BooleanUtils.toBoolean(String.valueOf(first))
  117.                 : Boolean.FALSE.equals(first) || !BooleanUtils.toBoolean(String.valueOf(first));
  118.     }

  119.     /**
  120.      * @param first
  121.      * @param second
  122.      * @return equal(second, first)
  123.      */
  124.     public static boolean equal(
  125.             final boolean first,
  126.             final Object second)
  127.     {
  128.         return equal(second, first);
  129.     }

  130.     /**
  131.      * @param first
  132.      * @param second
  133.      * @return !first.equals(second)
  134.      */
  135.     public static boolean notEqual(
  136.             final Object first,
  137.             final Object second)
  138.     {
  139.         return first == null ? second != null : !first.equals(second);
  140.     }

  141.     /**
  142.      * @param first
  143.      * @param second
  144.      * @return first != second
  145.      */
  146.     public static boolean notEqual(
  147.             final boolean first,
  148.             final boolean second)
  149.     {
  150.         return first != second;
  151.     }

  152.     /**
  153.      * @param first
  154.      * @param second
  155.      * @return equal
  156.      */
  157.     public static boolean equal(
  158.             final Object first,
  159.             final long second)
  160.     {
  161.         boolean equal = first instanceof Comparable;
  162.         if (equal)
  163.         {
  164.             final Comparable comparable = (Comparable) first;
  165.             if (comparable instanceof Integer)
  166.             {
  167.                 equal = comparable.compareTo(Integer.valueOf((int) second)) > 0;
  168.             }
  169.             else
  170.             {
  171.                 equal = comparable.equals(Long.valueOf(second));
  172.             }
  173.         }
  174.         return equal;
  175.     }

  176.     /**
  177.      * @param first
  178.      * @param second
  179.      * @return equal
  180.      */
  181.     public static boolean equal(
  182.             final Object first,
  183.             final int second)
  184.     {
  185.         boolean equal = first instanceof Comparable;
  186.         if (equal)
  187.         {
  188.             final Comparable comparable = (Comparable) first;
  189.             equal = comparable.equals(Integer.valueOf(second));
  190.         }
  191.         return equal;
  192.     }

  193.     /**
  194.      * @param first
  195.      * @param second
  196.      * @return first != second
  197.      */
  198.     public static boolean notEqual(
  199.             final int first,
  200.             final int second)
  201.     {
  202.         return first != second;
  203.     }

  204.     /**
  205.      * @param first
  206.      * @param second
  207.      * @return first != second
  208.      */
  209.     public static boolean notEqual(
  210.             final short first,
  211.             final short second)
  212.     {
  213.         return first != second;
  214.     }

  215.     /**
  216.      * @param first
  217.      * @param second
  218.      * @return first != second
  219.      */
  220.     public static boolean notEqual(
  221.             final byte first,
  222.             final byte second)
  223.     {
  224.         return first != second;
  225.     }

  226.     /**
  227.      * @param first
  228.      * @param second
  229.      * @return first != second
  230.      */
  231.     public static boolean notEqual(
  232.             final char first,
  233.             final char second)
  234.     {
  235.         return first != second;
  236.     }

  237.     /**
  238.      * @param first
  239.      * @param second
  240.      * @return first != second
  241.      */
  242.     public static boolean notEqual(
  243.             final float first,
  244.             final float second)
  245.     {
  246.         return first != second;
  247.     }

  248.     /**
  249.      * @param first
  250.      * @param second
  251.      * @return first != second
  252.      */
  253.     public static boolean notEqual(
  254.             final double first,
  255.             final double second)
  256.     {
  257.         return first != second;
  258.     }

  259.     /**
  260.      * @param first
  261.      * @param second
  262.      * @return first != second
  263.      */
  264.     public static boolean notEqual(
  265.             final long first,
  266.             final long second)
  267.     {
  268.         return first != second;
  269.     }

  270.     /**
  271.      * @param first
  272.      * @param second
  273.      * @return !equal(first, second)
  274.      */
  275.     public static boolean notEqual(
  276.             final Object first,
  277.             final boolean second)
  278.     {
  279.         return !equal(first, second);
  280.     }

  281.     /**
  282.      * @param first
  283.      * @param second
  284.      * @return notEqual(second, first)
  285.      */
  286.     public static boolean notEqual(
  287.             final boolean first,
  288.             final Object second)
  289.     {
  290.         return notEqual(second, first);
  291.     }

  292.     /**
  293.      * @param first
  294.      * @param second
  295.      * @return first.compareTo(second) < 0
  296.      */
  297.     public static boolean less(
  298.             final Comparable first,
  299.             final Comparable second)
  300.     {
  301.         return first == null ? second == null : first.compareTo(second) < 0;
  302.     }

  303.     /**
  304.      * @param first
  305.      * @param second
  306.      * @return first < second
  307.      */
  308.     public static boolean less(
  309.             final int first,
  310.             final int second)
  311.     {
  312.         return first < second;
  313.     }

  314.     /**
  315.      * @param first
  316.      * @param second
  317.      * @return first < second
  318.      */
  319.     public static boolean less(
  320.             final short first,
  321.             final short second)
  322.     {
  323.         return first < second;
  324.     }

  325.     /**
  326.      * @param first
  327.      * @param second
  328.      * @return first < second
  329.      */
  330.     public static boolean less(
  331.             final byte first,
  332.             final byte second)
  333.     {
  334.         return first < second;
  335.     }

  336.     /**
  337.      * @param first
  338.      * @param second
  339.      * @return first < second
  340.      */
  341.     public static boolean less(
  342.             final char first,
  343.             final char second)
  344.     {
  345.         return first < second;
  346.     }

  347.     /**
  348.      * @param first
  349.      * @param second
  350.      * @return first < second
  351.      */
  352.     public static boolean less(
  353.             final float first,
  354.             final float second)
  355.     {
  356.         return first < second;
  357.     }

  358.     /**
  359.      * @param first
  360.      * @param second
  361.      * @return first < second
  362.      */
  363.     public static boolean less(
  364.             final double first,
  365.             final double second)
  366.     {
  367.         return first < second;
  368.     }

  369.     /**
  370.      * @param first
  371.      * @param second
  372.      * @return first < second
  373.      */
  374.     public static boolean less(
  375.             final long first,
  376.             final long second)
  377.     {
  378.         return first < second;
  379.     }

  380.     /**
  381.      * @param first
  382.      * @param second
  383.      * @return first.compareTo(second) <= 0
  384.      */
  385.     public static boolean lessOrEqual(
  386.             final Comparable first,
  387.             final Comparable second)
  388.     {
  389.         return first == null ? second == null : (first.compareTo(second) <= 0);
  390.     }

  391.     /**
  392.      * @param first
  393.      * @param second
  394.      * @return lessOrEqual((Comparable) first, (Comparable) second)
  395.      */
  396.     public static boolean lessOrEqual(
  397.             final Object first,
  398.             final Object second)
  399.     {
  400.         boolean lessOrEqual = first instanceof Comparable && second instanceof Comparable;
  401.         if (lessOrEqual)
  402.         {
  403.             lessOrEqual = lessOrEqual((Comparable) first, (Comparable) second);
  404.         }
  405.         return lessOrEqual;
  406.     }

  407.     /**
  408.      * @param first
  409.      * @param second
  410.      * @return first <= second
  411.      */
  412.     public static boolean lessOrEqual(
  413.             final int first,
  414.             final int second)
  415.     {
  416.         return first <= second;
  417.     }

  418.     /**
  419.      * @param first
  420.      * @param second
  421.      * @return first <= second
  422.      */
  423.     public static boolean lessOrEqual(
  424.             final short first,
  425.             final short second)
  426.     {
  427.         return first <= second;
  428.     }

  429.     /**
  430.      * @param first
  431.      * @param second
  432.      * @return first <= second
  433.      */
  434.     public static boolean lessOrEqual(
  435.             final byte first,
  436.             final byte second)
  437.     {
  438.         return first <= second;
  439.     }

  440.     /**
  441.      * @param first
  442.      * @param second
  443.      * @return first <= second
  444.      */
  445.     public static boolean lessOrEqual(
  446.             final char first,
  447.             final char second)
  448.     {
  449.         return first <= second;
  450.     }

  451.     /**
  452.      * @param first
  453.      * @param second
  454.      * @return first <= second
  455.      */
  456.     public static boolean lessOrEqual(
  457.             final float first,
  458.             final float second)
  459.     {
  460.         return first <= second;
  461.     }

  462.     /**
  463.      * @param first
  464.      * @param second
  465.      * @return lessOrEqual((Comparable) first, Float.valueOf(second))
  466.      */
  467.     public static boolean lessOrEqual(
  468.             final Object first,
  469.             final float second)
  470.     {
  471.         boolean lessOrEqual = first instanceof Comparable;
  472.         if (lessOrEqual)
  473.         {
  474.             lessOrEqual = lessOrEqual((Comparable) first, Float.valueOf(second));
  475.         }
  476.         return lessOrEqual;
  477.     }

  478.     /**
  479.      * @param first
  480.      * @param second
  481.      * @return lessOrEqual(new Float(first), (Comparable) second)
  482.      */
  483.     public static boolean lessOrEqual(
  484.             final float first,
  485.             final Object second)
  486.     {
  487.         boolean lessOrEqual = second instanceof Comparable;
  488.         if (lessOrEqual)
  489.         {
  490.             lessOrEqual = lessOrEqual(new Float(first), (Comparable) second);
  491.         }
  492.         return lessOrEqual;
  493.     }

  494.     /**
  495.      * @param first
  496.      * @param second
  497.      * @return first <= second
  498.      */
  499.     public static boolean lessOrEqual(
  500.             final double first,
  501.             final double second)
  502.     {
  503.         return first <= second;
  504.     }

  505.     /**
  506.      * @param first
  507.      * @param second
  508.      * @return lessOrEqual((Comparable) first, Double.valueOf(second))
  509.      */
  510.     public static boolean lessOrEqual(
  511.             final Object first,
  512.             final double second)
  513.     {
  514.         boolean lessOrEqual = first instanceof Comparable;
  515.         if (lessOrEqual)
  516.         {
  517.             lessOrEqual = lessOrEqual((Comparable) first, Double.valueOf(second));
  518.         }
  519.         return lessOrEqual;
  520.     }

  521.     /**
  522.      * @param first
  523.      * @param second
  524.      * @return lessOrEqual(Double.valueOf(first), (Comparable) second)
  525.      */
  526.     public static boolean lessOrEqual(
  527.             final double first,
  528.             final Object second)
  529.     {
  530.         boolean lessOrEqual = second instanceof Comparable;
  531.         if (lessOrEqual)
  532.         {
  533.             lessOrEqual = lessOrEqual(Double.valueOf(first), (Comparable) second);
  534.         }
  535.         return lessOrEqual;
  536.     }

  537.     /**
  538.      * @param first
  539.      * @param second
  540.      * @return first <= second
  541.      */
  542.     public static boolean lessOrEqual(
  543.             final long first,
  544.             final long second)
  545.     {
  546.         return first <= second;
  547.     }

  548.     /**
  549.      * @param first
  550.      * @param second
  551.      * @return lessOrEqual((Comparable) first, Long.valueOf(second))
  552.      */
  553.     public static boolean lessOrEqual(
  554.             final Object first,
  555.             final long second)
  556.     {
  557.         boolean lessOrEqual = first instanceof Comparable;
  558.         if (lessOrEqual)
  559.         {
  560.             if (first instanceof Integer)
  561.             {
  562.                 lessOrEqual = lessOrEqual((Comparable) first, Integer.valueOf((int) second));
  563.             }
  564.             else
  565.             {
  566.                 lessOrEqual = lessOrEqual((Comparable) first, Long.valueOf(second));
  567.             }
  568.         }
  569.         return lessOrEqual;
  570.     }

  571.     /**
  572.      * @param first
  573.      * @param second
  574.      * @return lessOrEqual((Comparable) first, Integer.valueOf(second))
  575.      */
  576.     public static boolean lessOrEqual(
  577.             final Object first,
  578.             final int second)
  579.     {
  580.         boolean lessOrEqual = first instanceof Comparable;
  581.         if (lessOrEqual)
  582.         {
  583.             lessOrEqual = lessOrEqual((Comparable) first, Integer.valueOf(second));
  584.         }
  585.         return lessOrEqual;
  586.     }

  587.     /**
  588.      * @param first
  589.      * @param second
  590.      * @return lessOrEqual((Comparable) first, Short.valueOf(second))
  591.      */
  592.     public static boolean lessOrEqual(
  593.             final Object first,
  594.             final short second)
  595.     {
  596.         boolean lessOrEqual = first instanceof Comparable;
  597.         if (lessOrEqual)
  598.         {
  599.             lessOrEqual = lessOrEqual((Comparable) first, Short.valueOf(second));
  600.         }
  601.         return lessOrEqual;
  602.     }

  603.     /**
  604.      * @param first
  605.      * @param second
  606.      * @return lessOrEqual = lessOrEqual(Long.valueOf(first), (Comparable) second)
  607.      */
  608.     public static boolean lessOrEqual(
  609.             final long first,
  610.             final Object second)
  611.     {
  612.         boolean lessOrEqual = second instanceof Comparable;
  613.         if (lessOrEqual)
  614.         {
  615.             if (second instanceof Integer)
  616.             {
  617.                 lessOrEqual = lessOrEqual(Integer.valueOf((int) first), (Comparable) second);
  618.             }
  619.             else
  620.             {
  621.                 lessOrEqual = lessOrEqual(Long.valueOf(first), (Comparable) second);
  622.             }
  623.         }
  624.         return lessOrEqual;
  625.     }

  626.     /**
  627.      * @param first
  628.      * @param second
  629.      * @return lessOrEqual(new Integer(first), (Comparable) second)
  630.      */
  631.     public static boolean lessOrEqual(
  632.             final int first,
  633.             final Object second)
  634.     {
  635.         boolean lessOrEqual = second instanceof Comparable;
  636.         if (lessOrEqual)
  637.         {
  638.             lessOrEqual = lessOrEqual(new Integer(first), (Comparable) second);
  639.         }
  640.         return lessOrEqual;
  641.     }

  642.     /**
  643.      * @param first
  644.      * @param second
  645.      * @return lessOrEqual(new Short(first), (Comparable) second)
  646.      */
  647.     public static boolean lessOrEqual(
  648.             final short first,
  649.             final Object second)
  650.     {
  651.         boolean lessOrEqual = second instanceof Comparable;
  652.         if (lessOrEqual)
  653.         {
  654.             lessOrEqual = lessOrEqual(new Short(first), (Comparable) second);
  655.         }
  656.         return lessOrEqual;
  657.     }

  658.     /**
  659.      * @param first
  660.      * @param second
  661.      * @return first.compareTo(second) > 0
  662.      */
  663.     public static boolean greater(
  664.             final Comparable first,
  665.             final Comparable second)
  666.     {
  667.         return first == null ? second == null : first.compareTo(second) > 0;
  668.     }

  669.     /**
  670.      * @param first
  671.      * @param second
  672.      * @return comparable.compareTo(Long.valueOf(second)) > 0
  673.      */
  674.     public static boolean greater(
  675.             final Object first,
  676.             final long second)
  677.     {
  678.         boolean greater = first instanceof Comparable;
  679.         if (greater)
  680.         {
  681.             final Comparable comparable = (Comparable) first;
  682.             if (comparable instanceof Integer)
  683.             {
  684.                 greater = comparable.compareTo(Integer.valueOf((int) second)) > 0;
  685.             } else
  686.             {
  687.                 greater = comparable.compareTo(Long.valueOf(second)) > 0;
  688.             }
  689.         }
  690.         return greater;
  691.     }

  692.     /**
  693.      * @param first
  694.      * @param second
  695.      * @return comparable.compareTo(Long.valueOf(second)) > 0
  696.      */
  697.     public static boolean greater(
  698.             final Object first,
  699.             final int second)
  700.     {
  701.         boolean greater = first instanceof Comparable;
  702.         if (greater)
  703.         {
  704.             final Comparable comparable = (Comparable) first;
  705.             if (comparable instanceof Integer)
  706.             {
  707.                 greater = comparable.compareTo(Integer.valueOf(second)) > 0;
  708.             } else
  709.             {
  710.                 greater = comparable.compareTo(Long.valueOf(second)) > 0;
  711.             }
  712.         }
  713.         return greater;
  714.     }

  715.     /**
  716.      * @param first
  717.      * @param second
  718.      * @return first > second
  719.      */
  720.     public static boolean greater(
  721.             final byte first,
  722.             final byte second)
  723.     {
  724.         return first > second;
  725.     }

  726.     /**
  727.      * @param first
  728.      * @param second
  729.      * @return first > second
  730.      */
  731.     public static boolean greater(
  732.             final char first,
  733.             final char second)
  734.     {
  735.         return first > second;
  736.     }

  737.     /**
  738.      * @param first
  739.      * @param second
  740.      * @return first > second
  741.      */
  742.     public static boolean greater(
  743.             final float first,
  744.             final float second)
  745.     {
  746.         return first > second;
  747.     }

  748.     /**
  749.      * @param first
  750.      * @param second
  751.      * @return first > second
  752.      */
  753.     public static boolean greater(
  754.             final double first,
  755.             final double second)
  756.     {
  757.         return first > second;
  758.     }

  759.     /**
  760.      * @param first
  761.      * @param second
  762.      * @return first > second
  763.      */
  764.     public static boolean greater(
  765.             final long first,
  766.             final long second)
  767.     {
  768.         return first > second;
  769.     }

  770.     /**
  771.      * @param first
  772.      * @param second
  773.      * @return first.compareTo(second) >= 0
  774.      */
  775.     public static boolean greaterOrEqual(
  776.             final Comparable first,
  777.             final Comparable second)
  778.     {
  779.         return first == null ? second == null : first.compareTo(second) >= 0;
  780.     }

  781.     /**
  782.      * @param first
  783.      * @param second
  784.      * @return greaterOrEqual((Comparable) first, Long.valueOf(second))
  785.      */
  786.     public static boolean greaterOrEqual(
  787.             final Object first,
  788.             final long second)
  789.     {
  790.         boolean greaterOrEqual = first instanceof Comparable;
  791.         if (greaterOrEqual)
  792.         {
  793.             if (first instanceof Integer)
  794.             {
  795.                 greaterOrEqual = greaterOrEqual((Comparable) first, Integer.valueOf((int) second));
  796.             } else
  797.             {
  798.                 greaterOrEqual = greaterOrEqual((Comparable) first, Long.valueOf(second));
  799.             }
  800.         }
  801.         return greaterOrEqual;
  802.     }

  803.     /**
  804.      * @param first
  805.      * @param second
  806.      * @return greaterOrEqual((Comparable) first, Integer.valueOf(second))
  807.      */
  808.     public static boolean greaterOrEqual(
  809.             final Object first,
  810.             final int second)
  811.     {
  812.         boolean greaterOrEqual = first instanceof Comparable;
  813.         if (greaterOrEqual)
  814.         {
  815.             greaterOrEqual = greaterOrEqual((Comparable) first, Integer.valueOf(second));
  816.         }
  817.         return greaterOrEqual;
  818.     }

  819.     /**
  820.      * @param first
  821.      * @param second
  822.      * @return greaterOrEqual((Comparable) first, Short.valueOf(second))
  823.      */
  824.     public static boolean greaterOrEqual(
  825.             final Object first,
  826.             final short second)
  827.     {
  828.         boolean greaterOrEqual = first instanceof Comparable;
  829.         if (greaterOrEqual)
  830.         {
  831.             greaterOrEqual = greaterOrEqual((Comparable) first, Short.valueOf(second));
  832.         }
  833.         return greaterOrEqual;
  834.     }

  835.     /**
  836.      * @param first
  837.      * @param second
  838.      * @return greaterOrEqual(Long.valueOf(first), (Comparable) second)
  839.      */
  840.     public static boolean greaterOrEqual(
  841.             final long first,
  842.             final Object second)
  843.     {
  844.         boolean greaterOrEqual = second instanceof Comparable;
  845.         if (greaterOrEqual)
  846.         {
  847.             if (second instanceof Integer)
  848.             {
  849.                 greaterOrEqual = greaterOrEqual(Integer.valueOf((int) first), (Integer) second);
  850.             } else
  851.             {
  852.                 greaterOrEqual = greaterOrEqual(Long.valueOf(first), (Comparable) second);
  853.             }
  854.         }
  855.         return greaterOrEqual;
  856.     }

  857.     /**
  858.      * @param first
  859.      * @param second
  860.      * @return greaterOrEqual(Integer.valueOf(first), (Comparable) second)
  861.      */
  862.     public static boolean greaterOrEqual(
  863.             final int first,
  864.             final Object second)
  865.     {
  866.         boolean greaterOrEqual = second instanceof Comparable;
  867.         if (greaterOrEqual)
  868.         {
  869.             greaterOrEqual = greaterOrEqual(Integer.valueOf(first), (Comparable) second);
  870.         }
  871.         return greaterOrEqual;
  872.     }

  873.     /**
  874.      * @param first
  875.      * @param second
  876.      * @return greaterOrEqual(Short.valueOf(first), (Comparable) second)
  877.      */
  878.     public static boolean greaterOrEqual(
  879.             final short first,
  880.             final Object second)
  881.     {
  882.         boolean greaterOrEqual = second instanceof Comparable;
  883.         if (greaterOrEqual)
  884.         {
  885.             greaterOrEqual = greaterOrEqual(Short.valueOf(first), (Comparable) second);
  886.         }
  887.         return greaterOrEqual;
  888.     }

  889.     /**
  890.      * @param first
  891.      * @param second
  892.      * @return greaterOrEqual((Comparable) first, (Comparable) second)
  893.      */
  894.     public static boolean greaterOrEqual(
  895.             final Object first,
  896.             final Object second)
  897.     {
  898.         boolean greaterOrEqual = first instanceof Comparable && second instanceof Comparable;
  899.         if (greaterOrEqual)
  900.         {
  901.             greaterOrEqual = greaterOrEqual((Comparable) first, (Comparable) second);
  902.         }
  903.         return greaterOrEqual;
  904.     }

  905.     /**
  906.      * @param first
  907.      * @param second
  908.      * @return greaterOrEqual((Comparable) first, Double.valueOf(second))
  909.      */
  910.     public static boolean greaterOrEqual(
  911.             final Object first,
  912.             final double second)
  913.     {
  914.         boolean greaterOrEqual = first instanceof Comparable;
  915.         if (greaterOrEqual)
  916.         {
  917.             greaterOrEqual = greaterOrEqual((Comparable) first, Double.valueOf(second));
  918.         }
  919.         return greaterOrEqual;
  920.     }

  921.     /**
  922.      * @param first
  923.      * @param second
  924.      * @return greaterOrEqual((Comparable) first, Float.valueOf(second))
  925.      */
  926.     public static boolean greaterOrEqual(
  927.             final Object first,
  928.             final float second)
  929.     {
  930.         boolean greaterOrEqual = first instanceof Comparable;
  931.         if (greaterOrEqual)
  932.         {
  933.             greaterOrEqual = greaterOrEqual((Comparable) first, Float.valueOf(second));
  934.         }
  935.         return greaterOrEqual;
  936.     }

  937.     /**
  938.      * @param first
  939.      * @param second
  940.      * @return greaterOrEqual(new Double(first), (Comparable) second
  941.      */
  942.     public static boolean greaterOrEqual(
  943.             final double first,
  944.             final Object second)
  945.     {
  946.         boolean greaterOrEqual = second instanceof Comparable;
  947.         if (greaterOrEqual)
  948.         {
  949.             greaterOrEqual = greaterOrEqual(new Double(first), (Comparable) second);
  950.         }
  951.         return greaterOrEqual;
  952.     }

  953.     /**
  954.      * @param first
  955.      * @param second
  956.      * @return greaterOrEqual(new Float(first), (Comparable) second)
  957.      */
  958.     public static boolean greaterOrEqual(
  959.             final float first,
  960.             final Object second)
  961.     {
  962.         boolean greaterOrEqual = second instanceof Comparable;
  963.         if (greaterOrEqual)
  964.         {
  965.             greaterOrEqual = greaterOrEqual(new Float(first), (Comparable) second);
  966.         }
  967.         return greaterOrEqual;
  968.     }

  969.     /**
  970.      * @param first
  971.      * @param second
  972.      * @return first >= second
  973.      */
  974.     public static boolean greaterOrEqual(
  975.             final byte first,
  976.             final byte second)
  977.     {
  978.         return first >= second;
  979.     }

  980.     /**
  981.      * @param first
  982.      * @param second
  983.      * @return first >= second
  984.      */
  985.     public static boolean greaterOrEqual(
  986.             final char first,
  987.             final char second)
  988.     {
  989.         return first >= second;
  990.     }

  991.     /**
  992.      * @param first
  993.      * @param second
  994.      * @return first >= second
  995.      */
  996.     public static boolean greaterOrEqual(
  997.             final double first,
  998.             final double second)
  999.     {
  1000.         return first >= second;
  1001.     }

  1002.     /**
  1003.      * @param first
  1004.      * @param second
  1005.      * @return first >= second
  1006.      */
  1007.     public static boolean greaterOrEqual(
  1008.             final long first,
  1009.             final long second)
  1010.     {
  1011.         return first >= second;
  1012.     }
  1013. }