niedziela, grudnia 20, 2009

Umiejętność programowania pomaga :-)

Jak pisałem GG, albo jeszcze coś innego, się obraziło i dlatego nie mogę rozmawiać przez GG z użyciem Spika.
No to mam teraz GG7 albo 7.7 i problemem był brak listy.
Mógłbym oczywiście ręcznie przepisywać numerki, ale mi się nie chciało.

Dlatego zrobiłem to inaczej :-)
Najpierw eksport kontaktów z WP Spika do do pliku, formatem jest nieszczęsny XML, później trochę kodowania w Java'ie [góra 50 linii, btw. ten model dostępny w pakiecie org.w3c.dom jest taki sobie, wolę jednak trochę przyjaźniejszego DOMa a'la JavaScript :-)] i już XML jest analizowany i program generuje plik tekstowy w formacie do jakiego GG7 eksportuje listę kontaktów.
Następnie import do GG i w końcu eksport do serwera :-)

I już mam listę :-)

Jak ktoś zainteresowany to tutaj kod, który to robi ;-)
public static void main(String[] args) throws Exception {
File file = new File("d:\\lista.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
NodeList nodeLst = doc.getElementsByTagName("item");
for (int s = 0; s < nodeLst.getLength(); s++) {
String userNumber = "";
Node fstNode = nodeLst.item(s);
NamedNodeMap attributes = fstNode.getAttributes();
boolean isGG = false;
for (int j = 0; j<attributes.getLength(); j++) {
String str = attributes.item(j).toString();
str = str.replace("\"", "");
str = str.split("=")[1];
isGG = (str.indexOf("@gg.jabber.wp.pl")!=-1);
if (isGG) {
str = str.split("@gg.jabber.wp.pl")[0];
}
userNumber = str;
}
Element element = (Element)fstNode;
NodeList displayName = element.getElementsByTagName("displayname");
NodeList nickName = element.getElementsByTagName("nickname");
if (isGG) {
String name = "";
if (nickName!=null && nickName.getLength()>0) name = nickName.item(0).getTextContent();
if (displayName!=null && displayName.getLength()>0) name = displayName.item(0).getTextContent();
String str = ";;;"+name+";;;"+userNumber+";;0;;0;;0;";
System.out.println(str);
}
}
}



Podobne postybeta
Monitorujemy cenę IntelliJ'a ;-)
Niecne wykorzystanie refleksji... czyli jak poszukać tekstu w drzewie obiektów? ;-)
Sekrety klasy String ;-)
SSD a programowanie
SleepAdvisor - komórka pomaga w wyspaniu się ;-)