blob: 4f87f6dee8b4aa3797db22e7ad5857d0a8fd9fd6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.client.msg.core.internal.state;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Level;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.ote.client.msg.core.db.AbstractMessageDataBase;
import org.eclipse.osee.ote.client.msg.core.db.MessageInstance;
import org.eclipse.osee.ote.message.Message;
import org.eclipse.osee.ote.message.enums.DataType;
/**
* @author Ken J. Aguilar
*/
public class InactiveState extends AbstractSubscriptionState {
private final MessageInstance instance;
private final AbstractMessageDataBase msgDb;
public InactiveState(MessageInstance instance, AbstractMessageDataBase msgDb, AbstractSubscriptionState previousState) {
super(previousState);
this.instance = instance;
this.msgDb = msgDb;
}
@Override
public Message getMessage() {
return instance.getMessage();
}
@Override
public String getMsgClassName() {
return instance.getMessage().getClass().getName();
}
@Override
public ISubscriptionState onMessageDbFound(AbstractMessageDataBase msgDB) {
throw new Error("Unexpected input for this state");
}
@Override
public ISubscriptionState onMessageDbClosing(AbstractMessageDataBase msgDb) {
assert this.msgDb == msgDb;
getSubscription().notifyUnresolved();
try {
msgDb.releaseInstance(instance);
} catch (Exception e) {
OseeLog.log(ActivateState.class, Level.SEVERE, "problem releasing instance of " + getMsgClassName());
}
return new UnresolvedState(getMsgClassName(), this);
}
@Override
public void onCanceled() {
super.onCanceled();
try {
msgDb.releaseInstance(instance);
} catch (Exception e) {
OseeLog.log(ActivateState.class, Level.SEVERE, "problem releasing instance of " + getMsgClassName());
}
}
@Override
public ISubscriptionState onActivated() {
if (instance.isSupported()) {
getSubscription().notifyActivated();
return new ActivateState(instance, msgDb, this);
} else {
return this;
}
}
@Override
public ISubscriptionState onDeactivated() {
return this;
}
@Override
public Set<DataType> getAvailableTypes() {
return new HashSet<DataType>();
}
@Override
public boolean isActive() {
return false;
}
@Override
public boolean isResolved() {
return true;
}
}