1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: DateValidator.java,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 import com
.sun
.star
.form
.binding
.*;
35 * @author fs@openoffice.org
37 public class DateValidator
extends ControlValidator
40 /** Creates a new instance of NumericValidator */
41 public DateValidator( )
45 public String
explainInvalid( Object Value
)
49 if ( isVoid( Value
) )
52 com
.sun
.star
.util
.Date dateValue
= (com
.sun
.star
.util
.Date
)Value
;
53 if ( isDedicatedInvalidDate( dateValue
) )
54 return "this is no valid date";
56 if ( !isNextMonthsDate( dateValue
) )
57 return "date must denote a day in the current month";
59 catch( java
.lang
.Exception e
)
61 return "oops. What did you enter for this to happen?";
66 public boolean isValid( Object Value
)
70 if ( isVoid( Value
) )
73 com
.sun
.star
.util
.Date dateValue
= (com
.sun
.star
.util
.Date
)
74 com
.sun
.star
.uno
.AnyConverter
.toObject(
75 com
.sun
.star
.util
.Date
.class, Value
);
76 if ( isDedicatedInvalidDate( dateValue
) )
79 if ( !isNextMonthsDate( dateValue
) )
83 catch( java
.lang
.Exception e
)
85 e
.printStackTrace( System
.err
);
90 private boolean isDedicatedInvalidDate( com
.sun
.star
.util
.Date dateValue
)
92 return ( dateValue
.Day
== 0 ) && ( dateValue
.Month
== 0 ) && ( dateValue
.Year
== 0 );
95 private boolean isNextMonthsDate( com
.sun
.star
.util
.Date dateValue
)
97 int overallMonth
= dateValue
.Year
* 12 + dateValue
.Month
- 1;
99 int todaysMonth
= new java
.util
.Date().getMonth();
100 int todaysYear
= new java
.util
.Date().getYear() + 1900;
101 int todaysOverallMonth
= todaysYear
* 12 + todaysMonth
;
103 return overallMonth
== todaysOverallMonth
;