Gestern wurde eine neue Version des Allroundeditors Notepad++ released.

Die größten Änderungen betreffen das Markieren und Suchen im Text mehr dazu

Hier dann noch die offizielle Seite mit Download

Zum überprüfen, ob ein Artikel bereits ausgelaufen ist, benötigt man in der Regel die offizielle ebay Zeit.

Hier für gibt es den getOfficialEbayTimeCall. Dieser gibt die aktuell gültige ebay Zeit zurück.

Code & Download

Damit man nicht für jede Anfrage nach Kategorien einen ebay Call generieren muss, bietet es sich an, alle Kategorien in einer Datenbank zu speichern.

Welche Informationen man letztendlich benötigt, muss jeder für sein Projekt selbst entscheiden, ich habe hier mal eine einfache Repräsentation einer Kategorie gebaut.

Code&Download

Kategorien sind als Baum aufgebaut, haben also immer einen Verweis, der Richtung Wurzel weist.

Für die meisten ebay Abfragen werden wir den Datentyp com.ebay.soap.eBLBaseComponents.CategoryType verwenden.

Um alle Kategorien von ebay zu erhalten, gibt es mehrere Möglichkeiten.

Einmal den GetCategoriesCall und einmal den CategoriesDownloader. Letzterer ist für unser Vorhaben zu bevorzugen, da er die Kategorien beim Download cached und viel speichersparender zu verwenden ist.

Ebay gibt für die aktuellen Kategorien eine Version an. Man braucht also nur, wenn sich diese Versionsnummer von der lokalen unterscheidet, die Kategorien neu zu laden.

Um an die aktuelle Version zu kommen, verwenden wir den GetCategoriesCall.

Meine lokale Versionsnummer habe ich in einer Datenbank gespeichert, welche ich über einen DatabaseConnector anspreche. Diese Stelle muss dann natürlich an die jeweiligen Ansprüche angepasst werden.

Falls nun die Versionsnummer höher als die lokal gespeicherte ist, wird ein CategoriesDownload instanziiert und damit dann alle Kategorien geladen.

Diese können dann in lokale Objekte gewandelt werden und dann in die Datenbank gespeichert werden.

Download des Codes

Da ich leider online nirgends geeignete Beispiele zur ebay API gefunden habe, hier mal eine kleine Reihe an Auszügen aus meinem Code.

Für alle Aktionen wird das Objekt api-context vorrausgesetzt, dieses kann aber wiederverwendet werden.
Deswegen habe ich die Instanziierung ausgelagert. Diese Methode kann für alle Beispiele verwendet werden:
this.apiContext = new ApiContext();
ApiCredential cred = apiContext.getApiCredential();
cred.seteBayToken(auth);
apiContext.setApiServerUrl(host);
apiContext.setSite(SiteCodeType.GERMANY);
executor = Executors.newFixedThreadPool(4);
try {
getApiCallsAvailable();
} catch (OutOfCallsException e) {
this.end();
throw e;
}

Womit wir auch schon bei 2 kleinen Besonderheiten wären:

  • ich verwende zum steuern meiner Threads einen ExecutorService. Hiermit ist garantiert, dass ich nicht zuviele parallel laufende Anfragen an ebay sende, aber trotzdem mehrere Threads parallel laufen lassen kann
  • getApiCallsAvailable: hiermit frage ich die verbleibenen Calls ab. Ebay lässt pro Tag nur eine bestimmte Anzahl Calls zu, deswegen verhindert man mit der Abfrage, unnötigen Traffic

GetApiAccessRulesCall gc = new GetApiAccessRulesCall(getApiContext());
gc.getApiAccessRules();
ApiAccessRuleType a = gc.getReturnedApiAccessRules()[0];
if (a.getDailyUsage() > a.getDailyHardLimit()) {
throw new OutOfCallsException();
}
return a.getDailyHardLimit() - a.getDailyUsage();

Download des Codes

Nachdem Windows 7 ja nun eine neue Taskleiste eingeführt hat, an die man sich recht schnell gewöhnt, will man deren Features natürlich auch nutzen.

Eine tolle Funktion ist die Jumplist, mit der man über einen Rechtsklick auf das Symbol direkt wichtige Funktionen des gewählten Programms angezeigt bekommt. Oder auch die Fortschrittsanzeige bei Downloads etc.
Leider unterstützt Firefox diese Funktionen nicht, es gibt aber abhilfe: WinFox

Ein kleines Tool, welches man einfach zusätzlich ins Firefox Verzeichnis installiert und schon kann man allerhand neue Features nutzen.

Besonders praktisch finde ich die Möglichkeit, kürzlich besuchte Seiten einfach direkt wieder aufzurufen.

Download und Infos: hier