summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftError.java
blob: 773b941fde7df582603927aecb02ae3df311362d (plain) (tree)
1
2
3
4
5
6
7
8
9



                                  

                                  


                                                        
                                                     
                                                             
                                                       
                                                          
                                                        
                                                                




                                                 
                                                                                                                  




                                                                                                    


                                                                                                                      

                                                                                                      

                                                                                                                 


                                                                                                                         


                                                                             










                                                                                               

         












                                                                          
                                                     








                                                                             












                                                                                   
                                                                                                                          
















                                                                             










                                                                                                  
 
package org.openslx.dozmod.thrift;

import java.awt.Component;

import javax.swing.SwingUtilities;

import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import org.openslx.bwlp.thrift.iface.AuthorizationError;
import org.openslx.bwlp.thrift.iface.InvocationError;
import org.openslx.bwlp.thrift.iface.TAuthorizationException;
import org.openslx.bwlp.thrift.iface.TInvalidDateParam;
import org.openslx.bwlp.thrift.iface.TInvocationException;
import org.openslx.bwlp.thrift.iface.TNotFoundException;
import org.openslx.bwlp.thrift.iface.TTransferRejectedException;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.helper.MessageType;

public class ThriftError {

	public static void showMessage(final Component parent, Logger logger, TException ex, String messageText) {
		if (ex instanceof TNotFoundException) {
			messageText += "\n\nNicht gefunden";
		} else if (ex instanceof TAuthorizationException) {
			String reason = getString(((TAuthorizationException) ex).getNumber());
			messageText += "\n\nZugriff verweigert: " + reason + "\n" + ex.getMessage();
		} else if (ex instanceof TInvocationException) {
			messageText += "\n\nDer Funktionsaufruf konnte nicht durchgeführt werden: "
					+ getString(((TInvocationException) ex).getNumber()) + "\n" + ex.getMessage();
		} else if (ex instanceof TInvalidDateParam) {
			messageText += "\n\nEin angegebenes Datum ist ungültig:\n" + ex.getMessage();
		} else if (ex instanceof TTransferRejectedException) {
			messageText += "\n\nDie Transferanfrage wurde vom Server abgelehnt:\n" + ex.getMessage();
		} else {
			messageText += "\n\nUnerwartete Ausnahme " + ex.getClass().getSimpleName() + " ist aufgetreten.";
		}
		if (logger != null) {
			logger.warn("A thrift call raised an exception", ex);
		}
		if (SwingUtilities.isEventDispatchThread()) {
			Gui.showMessageBox(parent, messageText, MessageType.ERROR, null, null);
			return;
		}
		final String msg = messageText;
		Gui.asyncExec(new Runnable() {
			@Override
			public void run() {
				Gui.showMessageBox(parent, msg, MessageType.ERROR, null, null);
			}
		});
	}

	private static String getString(InvocationError error) {
		if (error == null)
			return "Interner serverseitiger Fehler";
		switch (error) {
		case INTERNAL_SERVER_ERROR:
			return "Interner serverseitiger Fehler";
		case INVALID_DATA:
			return "Ein Parameter hat einen ungültigen Wert";
		case INVALID_SHARE_MODE:
			return "Ungültiger Share-Mode";
		case MISSING_DATA:
			return "Ein Parameter fehlt (null?)";
		case UNKNOWN_IMAGE:
			return "Unbekannte VM/Image";
		case UNKNOWN_LECTURE:
			return "Unbekannte Veranstaltung";
		case UNKNOWN_USER:
			return "Unbekannter Benutzer";
		default:
			return "Unbekannter Fehlercode: " + error.toString();
		}
	}

	public static String getString(AuthorizationError error) {
		if (error == null)
			return "(AuthorizationError=null)";
		switch (error) {
		case ACCOUNT_SUSPENDED:
			return "Das Benutzerkonto ist gesperrt";
		case BANNED_NETWORK:
			return "Das Netzwerk, aus dem Sie operieren, ist gesperrt";
		case CHALLENGE_FAILED:
			return "Challenge fehlgeschlagen";
		case GENERIC_ERROR:
			return "Generischer Fehler";
		case INVALID_CREDENTIALS:
			return "Ungültige Zugangsdaten\nStellen Sie sicher, dass Benutzername und Passwort korrekt sind";
		case INVALID_KEY:
			return "Ungültiger Schlüssel";
		case INVALID_ORGANIZATION:
			return "Ungültige oder unbekannte Organisation";
		case INVALID_TOKEN:
			return "Ungültiges Sitzungstoken";
		case NOT_AUTHENTICATED:
			return "Nicht authentifiziert";
		case NO_PERMISSION:
			return "Keine ausreichenden Berechtigungen";
		case ORGANIZATION_SUSPENDED:
			return "Ihre zugehörige Organisation ist gesperrt";
		default:
			return "Unbekannter Fehlercode: " + error.toString();
		}
	}

	private static final String[] ignoredMethods = { "ping", "getStatus", "updateBlockHashes",
			"cancelUpload", "cancelDownload" };

	public static boolean failSilently(String methodName) {
		for (int i = 0; i < ignoredMethods.length; ++i) {
			if (ignoredMethods[i].equals(methodName))
				return true;
		}
		return false;
	}

}