use of cl.utfsm.acs.acg.core.UserAuthenticatorException in project ACS by ACS-Community.
the class ApplicationWorkbenchWindowAdvisor method postWindowOpen.
public void postWindowOpen() {
final IStatusLineManager status = getWindowConfigurer().getActionBarConfigurer().getStatusLineManager();
status.setMessage("Application starting...");
final Display display = getWindowConfigurer().getWindow().getShell().getDisplay();
// Disables the initial view
IViewReference[] views = getWindowConfigurer().getWindow().getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences();
for (int i = 0; i < views.length; i++) {
if (views[i].getId().compareTo(AlarmSystemView.ID) == 0)
((IMyViewPart) views[i].getView(false)).setEnabled(false);
}
boolean authenticated = false;
AuthenticationDialog d = new AuthenticationDialog(ApplicationWorkbenchWindowAdvisor.this.getWindowConfigurer().getWindow().getShell());
UserAuthenticator.Role role = null;
while (!authenticated) {
d.open();
UserAuthenticator userAuth = new UserAuthenticator();
try {
role = userAuth.authenticate(d.getUser(), d.getPassword());
} catch (UserAuthenticatorException e) {
d.setErrorMessage("Authentication unsuccessful");
continue;
} catch (IllegalArgumentException e) {
d.setErrorMessage("Please authenticate yourselve");
continue;
} finally {
status.setMessage("Authentication successful");
}
authenticated = true;
}
final UserAuthenticator.Role finalRole = role;
new Thread(new Runnable() {
@Override
public void run() {
AlarmSystemManager asm = AlarmSystemManager.getInstance(finalRole);
try {
display.asyncExec(new Runnable() {
public void run() {
status.setMessage("Connecting to Manager");
}
});
asm.connectToManager();
display.asyncExec(new Runnable() {
public void run() {
status.setMessage("Connecting to CDB DAL");
}
});
asm.connectToDAL();
display.asyncExec(new Runnable() {
public void run() {
status.setMessage("Loading contents from the CDB");
}
});
asm.loadFromCDB();
final String error = asm.checkCDB();
if (error.compareTo("") != 0) {
display.asyncExec(new Runnable() {
public void run() {
ErrorDialog edialog = new ErrorDialog(getWindowConfigurer().getWindow().getShell(), "CDB Error", "Error while checking CDB integrity", new Status(IStatus.ERROR, "cl.utfsm.acs.acg", error), IStatus.ERROR);
edialog.setBlockOnOpen(true);
edialog.open();
}
});
}
} catch (Exception e) {
e.printStackTrace();
display.asyncExec(new Runnable() {
public void run() {
status.setErrorMessage("Couldn't successfully connect to AS configuation");
}
});
return;
}
/* If everything went OK:
* Show the other views
* Enable the widgets and inform the user */
display.asyncExec(new Runnable() {
public void run() {
IWorkbenchPage page = getWindowConfigurer().getWindow().getActivePage();
try {
if (finalRole == Role.Administrator || finalRole == Role.Operator) {
page.showView(SourcesView.ID, null, IWorkbenchPage.VIEW_VISIBLE);
page.showView(CategoriesView.ID, null, IWorkbenchPage.VIEW_VISIBLE);
page.showView(AlarmsView.ID, null, IWorkbenchPage.VIEW_VISIBLE);
page.showView(ReductionsView.ID, null, IWorkbenchPage.VIEW_VISIBLE);
page.showView("org.eclipse.pde.runtime.LogView", null, IWorkbenchPage.VIEW_VISIBLE);
}
} catch (PartInitException e) {
status.setErrorMessage("Cannot open other views");
}
IViewReference[] views = page.getViewReferences();
for (int i = 0; i < views.length; i++) {
if (views[i].getId().compareTo(AlarmSystemView.ID) == 0)
((IMyViewPart) views[i].getView(false)).setEnabled(true);
if (finalRole == Role.Operator)
if (views[i].getView(false) instanceof IMyViewPart)
((IMyViewPart) views[i].getView(false)).setReadOnly(true);
}
status.setMessage("Application started successfully");
}
});
}
}).start();
}
Aggregations