Beispiel #1
0
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();
}
Beispiel #2
0
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);
    }
  }
}
Beispiel #3
0
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();
	}
}
Beispiel #4
0
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();
	}
}
Beispiel #5
0
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();
  }
}