В моем приложении мне нужно показать информацию о файлах как дружественную читаемую строку на основе MIME String файла. У меня есть информация, которая мне нужна (FYI, взятый из /usr/share/mime/package/freedesktop.org.xml на Ubuntu 14.04), и я бы хотел поставить все как статическую карту < «String», «MIMEInfoObject»> ,Огромная карта <String, "Some Class"> в Java
protected class MIMEInfoObject {
//Getters ...
//Setters ...
...
private String mimeType; //Example: "application/pdf
private String defaultDescription; // "PDF document"
private String localDescription; // "Documento PDF"
private String acronym; // "PDF"
private String extendedAcronym; // "Portable Document Format"
private List<String> extensionList; // "pdf .."
private List<String> aliasList; // "application/x-pdf, application/acrobat, ... "
}
Я сделал скрипт, который выводит файл Линукс как это:
<mime-type type="image/vnd.adobe.photoshop">
<comment>Photoshop image</comment>
<comment xml:lang="pt_BR">Imagem do Photoshop</comment>
<glob pattern="*.psd"/>
<alias type="image/psd"/>
<alias type="image/x-psd"/>
<alias type="image/photoshop"/>
<alias type="image/x-photoshop"/>
<alias type="application/photoshop"/>
<alias type="application/x-photoshop"/>
++++END+++
и я использовал этот вывод в другой скрипт, который генерирует Java код, как это:
MIMEInfoObject obj;
obj.setMimeType("application/pdf");
obj.setDefaultDescription("PDF document");
obj.setLocalDescription("Documento PDF");
obj.setAcronym("PDF");
obj.setExtendedAcronym("Portable Document Format");
if (obj.getExtensionList() == null) {
obj.setExtensionList(new ArrayList<String>());
}
extList = obj.getExtensionList();
extList.add("*.pdf");
obj.setExtensionList(extList);
if (obj.getAliasList() == null) {
obj.setAliasList(new ArrayList<String>());
}
aliasList = obj.getAliasList();
aliasList.add("application/x-pdf");
obj.setAliasList(aliasList);
if (obj.getAliasList() == null) {
obj.setAliasList(new ArrayList<String>());
}
aliasList = obj.getAliasList();
aliasList.add("image/pdf");
obj.setAliasList(aliasList);
if (obj.getAliasList() == null) {
obj.setAliasList(new ArrayList<String>());
}
aliasList = obj.getAliasList();
aliasList.add("application/acrobat");
obj.setAliasList(aliasList);
mimeString2Obj.put(obj.getMimeType(), obj);
for (String alias : obj.getAliasList()) {
mimeString2Obj.put(alias, obj);
}
Я знаю, что код выше глупо, но я могу его создать, но проблема в том, что он генерирует около 17000 строк кода. Java жалуется на ограничение байтов метода, которое составляет 65535, и оно превышено.
Я беспокоюсь, если кто-то лучше знает, как это сделать, учитывая, что я использую GWTP (поэтому я могу использовать JavaScript, хотя я не эксперт), и мое приложение будет работать как на рабочем столе/Мобильные браузеры и мобильное приложение (телефонная задержка).
Заранее спасибо.
Поместите функциональность в метод и вызвать его. –
Почему вы не разбираете XML с Java и не строите свою карту? – nneonneo
@DaveNewton это уже есть. Мофоды ограничены размером байта. –