Witam wszystkich
Otóż zna ktoś dobrą metodę sprawdzenia poprawności wpisanego przez usera w pole tekstowe aplikacji adresu IP przed zapisem do bazy danych??
Obecnie kombinuje z maska wprowadzania i o tyle w momencie gdy wpisuje się powiedzmy adres IP zgodny z maską XXX.XXX.XXX.XXX czyli np 192.168.100.100 wszystko jest oki, jednak w momencie gdy np adres IP będzie miał postać 192.168.0.1 niestety zgodnie z zadeklarowaną maska dres jest niepoprawny, szukałem trochę w sieci i znalazłem nadklasę realizująca maske dynamiczną ale nie działa w pełni tzn pozwala na wprowadzenie np 192.168.100.10 itp ale nie przyjmuje np 10.10.1.1 :(
class DynamicznyMaskFormatter extends MaskFormatter
{
public DynamicznyMaskFormatter()
{
super();
}
public DynamicznyMaskFormatter(String mask)
throws ParseException
{
super( mask );
}
public Object stringToValue( String value )
throws ParseException
{
Object rv;
String mask = getMask();
//System.out.println(mask);
if ( mask != null )
{
setMask( getMaskForString( mask, value ) );
rv = super.stringToValue( value.substring( 0, getMask().length() ) );
setMask( mask );
}
else
rv = super.stringToValue( value );
return rv;
}
protected String getMaskForString(String mask, String value)
{
StringBuffer sb = new StringBuffer();
StringBuffer sb2 = new StringBuffer();
StringBuffer newMask = new StringBuffer();
int maskLength = mask.length();
char placeHolder = getPlaceholderCharacter();
for (int k = 0, size = value.length(); k < size && k < maskLength; k++)
{
if (placeHolder == value.charAt(k))
{
break;
}
sb.append(mask.charAt(k));
if (value.charAt(k) == '.')
{
for (int i = 0; i < sb2.length(); i++)
{
newMask.append("#");
}
newMask.append(".");
sb2 = new StringBuffer();
}
else {
sb2.append(value.charAt(k));
}
}
// add on the last octet
for (int i = 0; i < sb2.length(); i++)
{
newMask.append("#");
}
//return sb.toString();
return newMask.toString();
}
}
Byłbym wdzięczny za pomoc w tym temacie, jestem początkujący i nie wiem jak mogłaby wyglądac inna metoda realizująca to :-(