void removeDir(JFile dir) { int attr = JFile::LA_DIRECTORY | JFile::LA_SORT; JArray fa = dir.list(attr, "*.*"); if (*(JString*)fa[0] == dotdot) fa.del(0); int i, sz = fa.size(); for (i=0; i<sz; i++) { JString fn = *(JString*)fa[i]; JFile tf = JFile(dir, fn(1, fn.length()-1)); removeDir(tf); } attr = JFile::LA_FILE | JFile::LA_SORT; fa = dir.list(attr, "*.*"); sz = fa.size(); for (i=0; i<sz; i++) { JFile tf = JFile(dir, *(JString*)fa[i]); printf("Delete File %s\n", (char*)tf.getPath()); tf.remove(); } printf("Remove Directory %s\n", (char*)dir.getPath()); dir.removeDir(); }
void DoGetProperties(const JObject* obj, void** arg) { JArray properties = ((JViewObj*)obj)->getProperties(); JArray &collection = *(JArray*)arg[0]; JDictionary &dict = *(JDictionary*)arg[1]; int sz = properties.size(); for (int i=0; i<sz; i++) { JProperty &prop = *(JProperty*)properties[i]; if (!dict[prop.getName()]) { dict.add(prop.getName(), prop); collection.append(prop); } } }
void JavaUpload::globalInit() { if (!JVM::JVMAvailable()) return; // locate Java plugins try { JUploadPlugin::registerNatives(); JClass helper("info.dolezel.fatrat.plugins.helpers.NativeHelpers"); JClass annotation("info.dolezel.fatrat.plugins.annotations.UploadPluginInfo"); JClass annConfigDialog("info.dolezel.fatrat.plugins.annotations.ConfigDialog"); QList<QVariant> args; args << "info.dolezel.fatrat.plugins" << annotation.toVariant(); JArray arr = helper.callStatic("findAnnotatedClasses", JSignature().addString().add("java.lang.Class").retA("java.lang.Class"), args).value<JArray>(); qDebug() << "Found" << arr.size() << "annotated classes (UploadPluginInfo)"; int classes = arr.size(); for (int i = 0; i < classes; i++) { try { JClass obj = (jobject) arr.getObject(i); JObject ann = obj.getAnnotation(annotation); QString name = ann.call("name", JSignature().retString()).toString(); QString clsName = obj.getClassName(); JObject instance(obj, JSignature()); qDebug() << "Class name:" << clsName; qDebug() << "Name:" << name; JObject cfgDlg = obj.getAnnotation(annConfigDialog); JavaEngine e = { "EXT - " + name.toStdString(), clsName.toStdString() }; if (!cfgDlg.isNull()) e.configDialog = cfgDlg.call("value", JSignature().retString()).toString(); if (instance.instanceOf("info.dolezel.fatrat.plugins.extra.URLAcceptableFilter")) e.ownAcceptable = instance; if (instance.instanceOf("info.dolezel.fatrat.plugins.listeners.ConfigListener")) g_configListeners << instance; m_engines[clsName] = e; qDebug() << "createInstance of " << clsName; EngineEntry entry; entry.longName = m_engines[clsName].name.c_str(); entry.shortName = m_engines[clsName].shortName.c_str(); entry.lpfnAcceptable2 = JavaUpload::acceptable; entry.lpfnCreate2 = JavaUpload::createInstance; entry.lpfnInit = 0; entry.lpfnExit = 0; entry.lpfnMultiOptions = 0; addTransferClass(entry, Transfer::Upload); } catch (const RuntimeException& e) { qDebug() << e.what(); } } } catch (const RuntimeException& e) { qDebug() << e.what(); } }
void JavaExtractor::globalInit() { try { JClass helper("info.dolezel.fatrat.plugins.helpers.NativeHelpers"); JClass annotation("info.dolezel.fatrat.plugins.annotations.ExtractorPluginInfo"); JExtractorPlugin::registerNatives(); JArgs args; args << "info.dolezel.fatrat.plugins" << annotation.toVariant(); JArray arr = helper.callStatic("findAnnotatedClasses", JSignature().addString().add("java.lang.Class").retA("java.lang.Class"), args).value<JArray>(); qDebug() << "Found" << arr.size() << "annotated classes (ExtractorPluginInfo)"; int classes = arr.size(); for (int i = 0; i < classes; i++) { try { JClass obj = (jobject) arr.getObject(i); JObject ann = obj.getAnnotation(annotation); QString regexp = ann.call("regexp", JSignature().retString()).toString(); QString name = ann.call("name", JSignature().retString()).toString(); QString targetClassName = ann.call("transferClassName", JSignature().retString()).toString(); QString clsName = obj.getClassName(); JObject instance(obj, JSignature()); if (targetClassName.isEmpty()) { JClass cls = JClass(ann.call("transferClass", JSignature().ret("java.lang.Class")).value<JObject>()); if (!cls.isNull() && cls.getClassName() != "java.lang.Object") targetClassName = cls.getClassName(); } qDebug() << "Class name:" << clsName; qDebug() << "Name:" << name; qDebug() << "Regexp:" << regexp; JavaEngine e = { "EXT - " + name.toStdString(), clsName.toStdString(), QRegExp(regexp) }; if (instance.instanceOf("info.dolezel.fatrat.plugins.extra.URLAcceptableFilter")) e.ownAcceptable = instance; if (instance.instanceOf("info.dolezel.fatrat.plugins.listeners.ConfigListener")) g_configListeners << instance; e.targetClass = targetClassName; m_engines[clsName] = e; EngineEntry entry; entry.longName = m_engines[clsName].name.c_str(); entry.shortName = m_engines[clsName].shortName.c_str(); entry.lpfnAcceptable2 = JavaExtractor::acceptable; entry.lpfnCreate2 = JavaExtractor::createInstance; entry.lpfnInit = 0; entry.lpfnExit = 0; entry.lpfnMultiOptions = 0; addTransferClass(entry, Transfer::Download); } catch (const RuntimeException& e) { qDebug() << e.what(); } } } catch (const RuntimeException& e) { qDebug() << e.what(); } }
void recursive(JFile from, JFile to) { JFile ff, tf; JString fn, tn; int attr = JFile::LA_DIRECTORY | JFile::LA_SORT; JArray fa = from.list(attr, "*.*"); JArray ta = to.list(attr, "*.*"); if (*(JString*)fa[0] == dotdot) fa.del(0); if (*(JString*)ta[0] == dotdot) ta.del(0); int i, sz = fa.size(); int tsz = ta.size(); for (i=0; i<sz; i++) { fn = *(JString*)fa[i]; ff = JFile(from, fn(1, fn.length()-1)); if (i < tsz) { tn = *(JString*)ta[i]; tf = JFile(to, tn(1, tn.length()-1)); } else tf = JFile(to, "*"); if ((i >= tsz) || (ff.getName() != tf.getName())) { if ((i < tsz) && (ff.getName() > tf.getName())) { printf("Remove Extra Directory %s\n", (char*)tf.getPath()); removeDir(tf); ta.del(i); tsz--; i--; continue; } tf = JFile(to, ff.getName()); printf("Create Directory %s\n", (char*)tf.getPath()); tf.makeDir(); ta.insert(JString("[")+ff.getName()+"]", i); tsz++; } if ((ff.getName() == tf.getName()) && tf.exists()) { printf("Check Directory %s\n", (char*)tf.getPath()); recursive(ff, tf); } } for (; i<tsz; i++) { tn = *(JString*)ta[i]; tf = JFile(to, tn(1, tn.length()-1)); printf("Remove Extra Directory %s\n", (char*)tf.getPath()); removeDir(tf); } attr = JFile::LA_FILE | JFile::LA_SORT; fa = from.list(attr, "*.*"); ta = to.list(attr, "*.*"); sz = fa.size(); tsz = ta.size(); for (i=0; i<sz; i++) { ff = JFile(from, *(JString*)fa[i]); if (i < tsz) tf = JFile(to, *(JString*)ta[i]); else tf = JFile(to, "*"); if ((i >= tsz) || (ff.getName() != tf.getName())) { if ((i < tsz) && (ff.getName() > tf.getName())) { printf("Delete Extra File %s\n", (char*)tf.getPath()); tf.remove(); ta.del(i); tsz--; i--; continue; } tf = JFile(to, ff.getName()); printf("Create File %s\n", (char*)tf.getPath()); copy(ff, tf); ta.insert(ff.getName(), i); tsz++; } if ((ff.getName() == tf.getName()) && tf.exists()) { if (ff.lastModified() > tf.lastModified()) { printf("Update File %s\n", (char*)tf.getPath()); copy(ff, tf); } } } for (; i<tsz; i++) { tf = JFile(to, *(JString*)ta[i]); printf("Delete Extra File %s\n", (char*)tf.getPath()); tf.remove(); } }