mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 00:57:31 -05:00
#90 [WIP] Adds support for attribute monitors to all of the decoder states. Updates color scheme in 'Now Playing' view for channel states. Wires selection listener for selected channel metadata to the Events and Messages views. Finalizes format for horizontal audio panels, font and coloration.
This commit is contained in:
@@ -19,10 +19,14 @@
|
||||
package module.decode.event;
|
||||
|
||||
import alias.Alias;
|
||||
import gui.SDRTrunk;
|
||||
import icon.IconManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.DefaultTableCellRenderer;
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* Custom renderer for JTable cells that contain Alias objects. Renders the
|
||||
@@ -32,6 +36,7 @@ import javax.swing.table.DefaultTableCellRenderer;
|
||||
public class CallEventAliasCellRenderer extends DefaultTableCellRenderer
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
private final static Logger mLog = LoggerFactory.getLogger(CallEventAliasCellRenderer.class);
|
||||
|
||||
private IconManager mIconManager;
|
||||
|
||||
@@ -41,35 +46,26 @@ public class CallEventAliasCellRenderer extends DefaultTableCellRenderer
|
||||
mIconManager = iconManager;
|
||||
}
|
||||
|
||||
public void setValue(Object obj)
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
|
||||
{
|
||||
if(obj != null && obj instanceof Alias)
|
||||
JLabel label = (JLabel)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
|
||||
|
||||
if(value instanceof Alias)
|
||||
{
|
||||
Alias alias = (Alias) obj;
|
||||
Alias alias = (Alias)value;
|
||||
|
||||
setText(alias.getName());
|
||||
|
||||
ImageIcon icon = getIcon(alias, IconManager.DEFAULT_ICON_SIZE);
|
||||
|
||||
if(icon != null)
|
||||
{
|
||||
setIcon(icon);
|
||||
}
|
||||
label.setText(alias.getName());
|
||||
label.setForeground(alias.getDisplayColor());
|
||||
label.setIcon(mIconManager.getIcon(alias.getIconName(), IconManager.DEFAULT_ICON_SIZE));
|
||||
}
|
||||
else
|
||||
{
|
||||
setText(" ");
|
||||
setIcon(null);
|
||||
}
|
||||
}
|
||||
|
||||
private ImageIcon getIcon(Alias alias, int height)
|
||||
{
|
||||
if(mIconManager != null && alias != null)
|
||||
{
|
||||
return mIconManager.getIcon(alias.getIconName(), height);
|
||||
label.setText("");
|
||||
label.setForeground(table.getForeground());
|
||||
label.setIcon(null);
|
||||
}
|
||||
|
||||
return null;
|
||||
return label;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
/*******************************************************************************
|
||||
* SDR Trunk
|
||||
* Copyright (C) 2014,2015 Dennis Sheirer
|
||||
*
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
******************************************************************************/
|
||||
package module.decode.event;
|
||||
|
||||
import alias.Alias;
|
||||
import module.decode.event.CallEvent.CallEventType;
|
||||
import sample.Listener;
|
||||
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
|
||||
import module.decode.event.CallEvent.CallEventType;
|
||||
import sample.Listener;
|
||||
|
||||
public class CallEventModel extends AbstractTableModel implements Listener<CallEvent>
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private static DecimalFormat mFrequencyFormatter = new DecimalFormat( "0.000000" );
|
||||
|
||||
private static DecimalFormat mFrequencyFormatter = new DecimalFormat("0.000000");
|
||||
|
||||
public static final int TIME = 0;
|
||||
public static final int EVENT = 1;
|
||||
public static final int FROM_ID = 2;
|
||||
@@ -43,168 +43,179 @@ public class CallEventModel extends AbstractTableModel implements Listener<CallE
|
||||
public static final int FREQUENCY = 7;
|
||||
public static final int DETAILS = 8;
|
||||
|
||||
protected int mMaxMessages = 500;
|
||||
protected int mMaxMessages = 500;
|
||||
|
||||
protected List<CallEvent> mEvents = new ArrayList<CallEvent>();
|
||||
protected List<CallEvent> mEvents = new ArrayList<CallEvent>();
|
||||
|
||||
protected String[] mHeaders = new String[] { "Time",
|
||||
"Event",
|
||||
"From",
|
||||
"Alias",
|
||||
"To",
|
||||
"Alias",
|
||||
"Channel",
|
||||
"Frequency",
|
||||
"Details" };
|
||||
protected String[] mHeaders = new String[]{"Time",
|
||||
"Event",
|
||||
"From",
|
||||
"Alias",
|
||||
"To",
|
||||
"Alias",
|
||||
"Channel",
|
||||
"Frequency",
|
||||
"Details"};
|
||||
|
||||
private SimpleDateFormat mSDFTime = new SimpleDateFormat( "HH:mm:ss" );
|
||||
|
||||
public CallEventModel()
|
||||
{
|
||||
}
|
||||
|
||||
public void dispose()
|
||||
{
|
||||
mEvents.clear();
|
||||
}
|
||||
|
||||
public void reset()
|
||||
{
|
||||
mEvents.clear();
|
||||
|
||||
fireTableDataChanged();
|
||||
}
|
||||
|
||||
public int getMaxMessageCount()
|
||||
{
|
||||
return mMaxMessages;
|
||||
}
|
||||
private SimpleDateFormat mSDFTime = new SimpleDateFormat("HH:mm:ss");
|
||||
|
||||
public void setMaxMessageCount( int count )
|
||||
{
|
||||
mMaxMessages = count;
|
||||
}
|
||||
public CallEventModel()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds, updates or deletes the event from the model. Producers can send
|
||||
* the same call event multiple times to indicate that information in the
|
||||
* event is updated. Producers can also mark the event as invalid and the
|
||||
* event will be removed from the model.
|
||||
*/
|
||||
public void receive( final CallEvent event )
|
||||
{
|
||||
if( event.isValid() )
|
||||
{
|
||||
if( !mEvents.contains( event ) )
|
||||
{
|
||||
mEvents.add( 0, event );
|
||||
|
||||
fireTableRowsInserted( 0, 0 );
|
||||
public void dispose()
|
||||
{
|
||||
mEvents.clear();
|
||||
}
|
||||
|
||||
prune();
|
||||
}
|
||||
else
|
||||
{
|
||||
int row = mEvents.indexOf( event );
|
||||
|
||||
fireTableRowsUpdated( row, row );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( mEvents.contains( event ) )
|
||||
{
|
||||
int row = mEvents.indexOf( event );
|
||||
|
||||
mEvents.remove( event );
|
||||
|
||||
fireTableRowsDeleted( row, row );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void prune()
|
||||
{
|
||||
while( mEvents.size() > mMaxMessages )
|
||||
{
|
||||
int index = mEvents.size() - 1;
|
||||
mEvents.remove( index );
|
||||
|
||||
fireTableRowsDeleted( index, index );
|
||||
}
|
||||
}
|
||||
public void reset()
|
||||
{
|
||||
mEvents.clear();
|
||||
|
||||
@Override
|
||||
fireTableDataChanged();
|
||||
}
|
||||
|
||||
public int getMaxMessageCount()
|
||||
{
|
||||
return mMaxMessages;
|
||||
}
|
||||
|
||||
public void setMaxMessageCount(int count)
|
||||
{
|
||||
mMaxMessages = count;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds, updates or deletes the event from the model. Producers can send
|
||||
* the same call event multiple times to indicate that information in the
|
||||
* event is updated. Producers can also mark the event as invalid and the
|
||||
* event will be removed from the model.
|
||||
*/
|
||||
public void receive(final CallEvent event)
|
||||
{
|
||||
if(event.isValid())
|
||||
{
|
||||
if(!mEvents.contains(event))
|
||||
{
|
||||
mEvents.add(0, event);
|
||||
|
||||
fireTableRowsInserted(0, 0);
|
||||
|
||||
prune();
|
||||
}
|
||||
else
|
||||
{
|
||||
int row = mEvents.indexOf(event);
|
||||
|
||||
fireTableRowsUpdated(row, row);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(mEvents.contains(event))
|
||||
{
|
||||
int row = mEvents.indexOf(event);
|
||||
|
||||
mEvents.remove(event);
|
||||
|
||||
fireTableRowsDeleted(row, row);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void prune()
|
||||
{
|
||||
while(mEvents.size() > mMaxMessages)
|
||||
{
|
||||
int index = mEvents.size() - 1;
|
||||
mEvents.remove(index);
|
||||
|
||||
fireTableRowsDeleted(index, index);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRowCount()
|
||||
{
|
||||
return mEvents.size();
|
||||
return mEvents.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public int getColumnCount()
|
||||
{
|
||||
return mHeaders.length;
|
||||
return mHeaders.length;
|
||||
}
|
||||
|
||||
public String getColumnName( int column )
|
||||
{
|
||||
return mHeaders[ column ];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValueAt( int rowIndex, int columnIndex )
|
||||
public String getColumnName(int column)
|
||||
{
|
||||
synchronized( mEvents )
|
||||
{
|
||||
switch( columnIndex )
|
||||
{
|
||||
case TIME:
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append( mSDFTime.format(
|
||||
mEvents.get( rowIndex ).getEventStartTime() ) );
|
||||
|
||||
if( mEvents.get( rowIndex ).getEventEndTime() != 0 )
|
||||
{
|
||||
sb.append( " - " );
|
||||
sb.append( mSDFTime.format(
|
||||
mEvents.get( rowIndex ).getEventEndTime() ) );
|
||||
}
|
||||
else if( mEvents.get( rowIndex )
|
||||
.getCallEventType() == CallEventType.CALL )
|
||||
{
|
||||
sb.append( " - In Progress" );
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
case EVENT:
|
||||
return mEvents.get( rowIndex ).getCallEventType();
|
||||
case FROM_ID:
|
||||
return mEvents.get( rowIndex ).getFromID();
|
||||
case FROM_ALIAS:
|
||||
return mEvents.get( rowIndex ).getFromIDAlias();
|
||||
case TO_ID:
|
||||
return mEvents.get( rowIndex ).getToID();
|
||||
case TO_ALIAS:
|
||||
return mEvents.get( rowIndex ).getToIDAlias();
|
||||
case CHANNEL:
|
||||
return mEvents.get( rowIndex ).getChannel();
|
||||
case FREQUENCY:
|
||||
long frequency = mEvents.get( rowIndex ).getFrequency();
|
||||
|
||||
if( frequency != 0 )
|
||||
{
|
||||
return mFrequencyFormatter.format( (double)frequency / 1E6d );
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
case DETAILS:
|
||||
return mEvents.get( rowIndex ).getDetails();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return mHeaders[column];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValueAt(int rowIndex, int columnIndex)
|
||||
{
|
||||
synchronized(mEvents)
|
||||
{
|
||||
switch(columnIndex)
|
||||
{
|
||||
case TIME:
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append(mSDFTime.format(
|
||||
mEvents.get(rowIndex).getEventStartTime()));
|
||||
|
||||
if(mEvents.get(rowIndex).getEventEndTime() != 0)
|
||||
{
|
||||
sb.append(" - ");
|
||||
sb.append(mSDFTime.format(
|
||||
mEvents.get(rowIndex).getEventEndTime()));
|
||||
}
|
||||
else if(mEvents.get(rowIndex)
|
||||
.getCallEventType() == CallEventType.CALL)
|
||||
{
|
||||
sb.append(" - In Progress");
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
case EVENT:
|
||||
return mEvents.get(rowIndex).getCallEventType();
|
||||
case FROM_ID:
|
||||
return mEvents.get(rowIndex).getFromID();
|
||||
case FROM_ALIAS:
|
||||
return mEvents.get(rowIndex).getFromIDAlias();
|
||||
case TO_ID:
|
||||
return mEvents.get(rowIndex).getToID();
|
||||
case TO_ALIAS:
|
||||
return mEvents.get(rowIndex).getToIDAlias();
|
||||
case CHANNEL:
|
||||
return mEvents.get(rowIndex).getChannel();
|
||||
case FREQUENCY:
|
||||
long frequency = mEvents.get(rowIndex).getFrequency();
|
||||
|
||||
if(frequency != 0)
|
||||
{
|
||||
return mFrequencyFormatter.format((double) frequency / 1E6d);
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
case DETAILS:
|
||||
return mEvents.get(rowIndex).getDetails();
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getColumnClass(int columnIndex)
|
||||
{
|
||||
if(columnIndex == FROM_ALIAS || columnIndex == TO_ALIAS)
|
||||
{
|
||||
return Alias.class;
|
||||
}
|
||||
|
||||
return super.getColumnClass(columnIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,112 +18,58 @@
|
||||
******************************************************************************/
|
||||
package module.decode.event;
|
||||
|
||||
import controller.channel.Channel;
|
||||
import controller.channel.ChannelEvent;
|
||||
import controller.channel.ChannelEvent.Event;
|
||||
import controller.channel.ChannelEventListener;
|
||||
import controller.channel.ChannelProcessingManager;
|
||||
import icon.IconManager;
|
||||
import module.ProcessingChain;
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import sample.Listener;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
public class CallEventPanel extends JPanel implements ChannelEventListener
|
||||
public class CallEventPanel extends JPanel implements Listener<ProcessingChain>
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private JTable mTable;
|
||||
private CallEventModel mEmptyCallEventModel = new CallEventModel();
|
||||
private JScrollPane mEmptyScroller;
|
||||
private Channel mDisplayedChannel;
|
||||
private CallEventAliasCellRenderer mRenderer;
|
||||
private ChannelProcessingManager mChannelProcessingManager;
|
||||
|
||||
public CallEventPanel(IconManager iconManager, ChannelProcessingManager channelProcessingManager)
|
||||
/**
|
||||
* View for call event table
|
||||
* @param iconManager to display alias icons in table rows
|
||||
*/
|
||||
public CallEventPanel(IconManager iconManager)
|
||||
{
|
||||
mChannelProcessingManager = channelProcessingManager;
|
||||
setLayout(new MigLayout("insets 0 0 0 0", "[grow,fill]", "[grow,fill]"));
|
||||
|
||||
setLayout(new MigLayout("insets 0 0 0 0 ", "[grow,fill]", "[grow,fill]"));
|
||||
|
||||
JTable table = new JTable(new CallEventModel());
|
||||
table.setAutoCreateRowSorter(true);
|
||||
table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
|
||||
mTable = new JTable(mEmptyCallEventModel);
|
||||
mTable.setAutoCreateRowSorter(true);
|
||||
mTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
|
||||
|
||||
mRenderer = new CallEventAliasCellRenderer(iconManager);
|
||||
|
||||
table.getColumnModel().getColumn(CallEventModel.FROM_ALIAS).setCellRenderer(mRenderer);
|
||||
|
||||
table.getColumnModel().getColumn(CallEventModel.TO_ALIAS).setCellRenderer(mRenderer);
|
||||
|
||||
mEmptyScroller = new JScrollPane(table);
|
||||
mEmptyScroller = new JScrollPane(mTable);
|
||||
|
||||
add(mEmptyScroller);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void channelChanged(final ChannelEvent event)
|
||||
public void receive(ProcessingChain processingChain)
|
||||
{
|
||||
if(event.getEvent() == Event.NOTIFICATION_SELECTION_CHANGE && event.getChannel().isSelected())
|
||||
EventQueue.invokeLater(new Runnable()
|
||||
{
|
||||
if(mDisplayedChannel == null || (mDisplayedChannel != null && mDisplayedChannel != event.getChannel()))
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
ProcessingChain chain = mChannelProcessingManager.getProcessingChain(event.getChannel());
|
||||
mTable.setModel(processingChain != null ? processingChain.getCallEventModel() : mEmptyCallEventModel);
|
||||
|
||||
if(chain != null)
|
||||
if(processingChain != null)
|
||||
{
|
||||
final CallEventModel model = chain.getCallEventModel();
|
||||
|
||||
if(model != null)
|
||||
{
|
||||
EventQueue.invokeLater(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
removeAll();
|
||||
|
||||
JTable table = new JTable(model);
|
||||
|
||||
table.setAutoCreateRowSorter(true);
|
||||
table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
|
||||
|
||||
table.getColumnModel().getColumn(CallEventModel.FROM_ALIAS)
|
||||
.setCellRenderer(mRenderer);
|
||||
|
||||
table.getColumnModel().getColumn(CallEventModel.TO_ALIAS)
|
||||
.setCellRenderer(mRenderer);
|
||||
|
||||
add(new JScrollPane(table));
|
||||
|
||||
mDisplayedChannel = event.getChannel();
|
||||
|
||||
revalidate();
|
||||
repaint();
|
||||
}
|
||||
});
|
||||
}
|
||||
mTable.getColumnModel().getColumn(CallEventModel.FROM_ALIAS).setCellRenderer(mRenderer);
|
||||
mTable.getColumnModel().getColumn(CallEventModel.TO_ALIAS).setCellRenderer(mRenderer);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(event.getEvent() == Event.NOTIFICATION_PROCESSING_STOP || event.getEvent() == Event.REQUEST_DISABLE)
|
||||
{
|
||||
if(mDisplayedChannel != null && mDisplayedChannel == event.getChannel())
|
||||
{
|
||||
mDisplayedChannel = null;
|
||||
|
||||
EventQueue.invokeLater(new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
removeAll();
|
||||
add(mEmptyScroller);
|
||||
|
||||
revalidate();
|
||||
repaint();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ import module.ProcessingChain;
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import sample.Listener;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
@@ -42,7 +43,7 @@ import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
|
||||
public class MessageActivityPanel extends JPanel implements ChannelEventListener
|
||||
public class MessageActivityPanel extends JPanel implements Listener<ProcessingChain>
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -50,10 +51,7 @@ public class MessageActivityPanel extends JPanel implements ChannelEventListener
|
||||
|
||||
private static MessageActivityModel EMPTY_MODEL = new MessageActivityModel();
|
||||
|
||||
private JTable mMessageTable;
|
||||
|
||||
private Channel mDisplayedChannel;
|
||||
private MessageActivityModel mDisplayedModel = EMPTY_MODEL;
|
||||
private JTable mTable = new JTable(EMPTY_MODEL);
|
||||
|
||||
private MessageManagementPanel mManagementPanel = new MessageManagementPanel();
|
||||
|
||||
@@ -67,37 +65,20 @@ public class MessageActivityPanel extends JPanel implements ChannelEventListener
|
||||
|
||||
add(mManagementPanel, "span,growx");
|
||||
|
||||
mMessageTable = new JTable(mDisplayedModel);
|
||||
|
||||
add(new JScrollPane(mMessageTable), "span,grow");
|
||||
add(new JScrollPane(mTable), "span,grow");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void channelChanged(ChannelEvent event)
|
||||
public void receive(ProcessingChain processingChain)
|
||||
{
|
||||
boolean changed = false;
|
||||
|
||||
if(event.getEvent() == Event.NOTIFICATION_SELECTION_CHANGE &&
|
||||
event.getChannel().isSelected())
|
||||
EventQueue.invokeLater(new Runnable()
|
||||
{
|
||||
if(mDisplayedChannel == null || (mDisplayedChannel != null && mDisplayedChannel != event.getChannel()))
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
mDisplayedChannel = event.getChannel();
|
||||
mTable.setModel(processingChain != null ? processingChain.getMessageActivityModel() : EMPTY_MODEL);
|
||||
|
||||
ProcessingChain chain = mChannelProcessingManager.getProcessingChain(mDisplayedChannel);
|
||||
|
||||
if(chain != null)
|
||||
{
|
||||
mDisplayedModel = chain.getMessageActivityModel();
|
||||
}
|
||||
else
|
||||
{
|
||||
mDisplayedModel = EMPTY_MODEL;
|
||||
}
|
||||
|
||||
mMessageTable.setModel(mDisplayedModel);
|
||||
|
||||
if(mDisplayedChannel != null)
|
||||
if(processingChain != null)
|
||||
{
|
||||
mManagementPanel.enableButtons();
|
||||
}
|
||||
@@ -105,31 +86,68 @@ public class MessageActivityPanel extends JPanel implements ChannelEventListener
|
||||
{
|
||||
mManagementPanel.disableButtons();
|
||||
}
|
||||
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
else if(event.getEvent() == Event.NOTIFICATION_PROCESSING_STOP || event.getEvent() == Event.REQUEST_DISABLE)
|
||||
{
|
||||
if(mDisplayedChannel != null && mDisplayedChannel == event.getChannel())
|
||||
{
|
||||
mDisplayedChannel = null;
|
||||
|
||||
mMessageTable.setModel(EMPTY_MODEL);
|
||||
|
||||
mManagementPanel.disableButtons();
|
||||
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(changed)
|
||||
{
|
||||
revalidate();
|
||||
repaint();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void channelChanged(ChannelEvent event)
|
||||
// {
|
||||
// boolean changed = false;
|
||||
//
|
||||
// if(event.getEvent() == Event.NOTIFICATION_SELECTION_CHANGE &&
|
||||
// event.getChannel().isSelected())
|
||||
// {
|
||||
// if(mDisplayedChannel == null || (mDisplayedChannel != null && mDisplayedChannel != event.getChannel()))
|
||||
// {
|
||||
// mDisplayedChannel = event.getChannel();
|
||||
//
|
||||
// ProcessingChain chain = mChannelProcessingManager.getProcessingChain(mDisplayedChannel);
|
||||
//
|
||||
// if(chain != null)
|
||||
// {
|
||||
// mDisplayedModel = chain.getMessageActivityModel();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// mDisplayedModel = EMPTY_MODEL;
|
||||
// }
|
||||
//
|
||||
// mMessageTable.setModel(mDisplayedModel);
|
||||
//
|
||||
// if(mDisplayedChannel != null)
|
||||
// {
|
||||
// mManagementPanel.enableButtons();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// mManagementPanel.disableButtons();
|
||||
// }
|
||||
//
|
||||
// changed = true;
|
||||
// }
|
||||
// }
|
||||
// else if(event.getEvent() == Event.NOTIFICATION_PROCESSING_STOP || event.getEvent() == Event.REQUEST_DISABLE)
|
||||
// {
|
||||
// if(mDisplayedChannel != null && mDisplayedChannel == event.getChannel())
|
||||
// {
|
||||
// mDisplayedChannel = null;
|
||||
//
|
||||
// mMessageTable.setModel(EMPTY_MODEL);
|
||||
//
|
||||
// mManagementPanel.disableButtons();
|
||||
//
|
||||
// changed = true;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if(changed)
|
||||
// {
|
||||
// revalidate();
|
||||
// repaint();
|
||||
// }
|
||||
// }
|
||||
|
||||
public class MessageManagementPanel extends JPanel
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -184,8 +202,7 @@ public class MessageActivityPanel extends JPanel implements ChannelEventListener
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent arg0)
|
||||
{
|
||||
if(SwingUtilities.isLeftMouseButton(arg0) &&
|
||||
arg0.getClickCount() == 2)
|
||||
if(SwingUtilities.isLeftMouseButton(arg0) && arg0.getClickCount() == 2)
|
||||
{
|
||||
slider.setValue(500); //default
|
||||
}
|
||||
@@ -208,24 +225,13 @@ public class MessageActivityPanel extends JPanel implements ChannelEventListener
|
||||
}
|
||||
});
|
||||
|
||||
if(mDisplayedModel != null)
|
||||
{
|
||||
slider.setValue(mDisplayedModel.getMaxMessageCount());
|
||||
}
|
||||
else
|
||||
{
|
||||
slider.setValue(500);
|
||||
}
|
||||
|
||||
slider.setValue(((MessageActivityModel)mTable.getModel()).getMaxMessageCount());
|
||||
slider.addChangeListener(new ChangeListener()
|
||||
{
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent arg0)
|
||||
{
|
||||
if(mDisplayedModel != null)
|
||||
{
|
||||
mDisplayedModel.setMaxMessageCount(slider.getValue());
|
||||
}
|
||||
((MessageActivityModel)mTable.getModel()).setMaxMessageCount(slider.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -239,10 +245,7 @@ public class MessageActivityPanel extends JPanel implements ChannelEventListener
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{
|
||||
if(mDisplayedModel != null)
|
||||
{
|
||||
mDisplayedModel.clear();
|
||||
}
|
||||
((MessageActivityModel)mTable.getModel()).clear();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -261,61 +264,46 @@ public class MessageActivityPanel extends JPanel implements ChannelEventListener
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0)
|
||||
{
|
||||
if(mDisplayedChannel == null)
|
||||
final JFrame editor = new JFrame();
|
||||
|
||||
editor.setTitle("Message Filter Editor");
|
||||
editor.setSize(600, 400);
|
||||
editor.setLocationRelativeTo(MessageFilterButton.this);
|
||||
editor.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
editor.setLayout(new MigLayout("", "[grow,fill]",
|
||||
"[grow,fill][][]"));
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
FilterSet<Message> filter = (FilterSet<Message>) ((MessageActivityModel)mTable.getModel()).getMessageFilter();
|
||||
|
||||
FilterEditorPanel<Message> panel = new FilterEditorPanel<Message>(filter);
|
||||
|
||||
JScrollPane scroller = new JScrollPane(panel);
|
||||
scroller.setViewportView(panel);
|
||||
|
||||
editor.add(scroller, "wrap");
|
||||
|
||||
editor.add(new JLabel("Right-click to select/deselect all nodes"), "wrap");
|
||||
|
||||
JButton close = new JButton("Close");
|
||||
close.addActionListener(new ActionListener()
|
||||
{
|
||||
JOptionPane.showMessageDialog(MessageFilterButton.this,
|
||||
"Please enable and select a decoding channel to "
|
||||
+ "adjust the channel's message display filter");
|
||||
}
|
||||
else
|
||||
{
|
||||
if(mDisplayedModel != null)
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{
|
||||
final JFrame editor = new JFrame();
|
||||
|
||||
editor.setTitle("Message Filter Editor");
|
||||
editor.setSize(600, 400);
|
||||
editor.setLocationRelativeTo(MessageFilterButton.this);
|
||||
editor.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
editor.setLayout(new MigLayout("", "[grow,fill]",
|
||||
"[grow,fill][][]"));
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
FilterSet<Message> filter = (FilterSet<Message>)
|
||||
mDisplayedModel.getMessageFilter();
|
||||
|
||||
FilterEditorPanel<Message> panel =
|
||||
new FilterEditorPanel<Message>(filter);
|
||||
|
||||
JScrollPane scroller = new JScrollPane(panel);
|
||||
scroller.setViewportView(panel);
|
||||
|
||||
editor.add(scroller, "wrap");
|
||||
|
||||
editor.add(new JLabel("Right-click to select/deselect "
|
||||
+ "all nodes"), "wrap");
|
||||
|
||||
JButton close = new JButton("Close");
|
||||
close.addActionListener(new ActionListener()
|
||||
{
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{
|
||||
editor.dispose();
|
||||
}
|
||||
});
|
||||
|
||||
editor.add(close);
|
||||
|
||||
EventQueue.invokeLater(new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
editor.setVisible(true);
|
||||
}
|
||||
});
|
||||
editor.dispose();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
editor.add(close);
|
||||
|
||||
EventQueue.invokeLater(new Runnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
editor.setVisible(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -20,6 +20,8 @@ package module.decode.fleetsync2;
|
||||
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import alias.id.AliasIDType;
|
||||
import channel.metadata.AliasedStringAttributeMonitor;
|
||||
import channel.metadata.Attribute;
|
||||
import channel.metadata.AttributeChangeRequest;
|
||||
import channel.state.DecoderState;
|
||||
@@ -39,20 +41,20 @@ public class Fleetsync2DecoderState extends DecoderState
|
||||
private TreeSet<String> mIdents = new TreeSet<String>();
|
||||
private TreeSet<String> mEmergencyIdents = new TreeSet<String>();
|
||||
|
||||
private String mFrom;
|
||||
private Alias mFromAlias;
|
||||
|
||||
private String mTo;
|
||||
private Alias mToAlias;
|
||||
|
||||
private AliasedStringAttributeMonitor mFromAttribute;
|
||||
private AliasedStringAttributeMonitor mToAttribute;
|
||||
private String mMessage;
|
||||
private String mMessageType;
|
||||
|
||||
private long mFrequency;
|
||||
|
||||
public Fleetsync2DecoderState(AliasList aliasList)
|
||||
{
|
||||
super(aliasList);
|
||||
|
||||
mFromAttribute = new AliasedStringAttributeMonitor(Attribute.SECONDARY_ADDRESS_FROM,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.FLEETSYNC);
|
||||
mToAttribute = new AliasedStringAttributeMonitor(Attribute.SECONDARY_ADDRESS_TO,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.FLEETSYNC);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -99,10 +101,8 @@ public class Fleetsync2DecoderState extends DecoderState
|
||||
*/
|
||||
public void resetState()
|
||||
{
|
||||
mFrom = null;
|
||||
mFromAlias = null;
|
||||
mTo = null;
|
||||
mToAlias = null;
|
||||
mFromAttribute.reset();
|
||||
mToAttribute.reset();
|
||||
mMessage = null;
|
||||
mMessageType = null;
|
||||
}
|
||||
@@ -118,14 +118,14 @@ public class Fleetsync2DecoderState extends DecoderState
|
||||
{
|
||||
State state = State.CALL;
|
||||
|
||||
setFromID(fleetsync.getFromID());
|
||||
mFromAttribute.process(fleetsync.getFromID());
|
||||
mIdents.add(fleetsync.getFromID());
|
||||
|
||||
FleetsyncMessageType type = fleetsync.getMessageType();
|
||||
|
||||
if(type != FleetsyncMessageType.ANI)
|
||||
{
|
||||
setToID(fleetsync.getToID());
|
||||
mToAttribute.process(fleetsync.getToID());
|
||||
mIdents.add(fleetsync.getToID());
|
||||
}
|
||||
|
||||
@@ -175,46 +175,6 @@ public class Fleetsync2DecoderState extends DecoderState
|
||||
}
|
||||
}
|
||||
|
||||
public String getFromID()
|
||||
{
|
||||
return mFrom;
|
||||
}
|
||||
|
||||
public Alias getFromIDAlias()
|
||||
{
|
||||
return mFromAlias;
|
||||
}
|
||||
|
||||
public void setFromID(String from)
|
||||
{
|
||||
if(!StringUtils.isEqual(mFrom, from))
|
||||
{
|
||||
mFrom = from;
|
||||
mFromAlias = hasAliasList() ? getAliasList().getFleetsyncAlias(mFrom) : null;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_FROM, mFrom, mFromAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public String getToID()
|
||||
{
|
||||
return mTo;
|
||||
}
|
||||
|
||||
public Alias getToIDAlias()
|
||||
{
|
||||
return mToAlias;
|
||||
}
|
||||
|
||||
public void setToID(String to)
|
||||
{
|
||||
if(!StringUtils.isEqual(mTo, to))
|
||||
{
|
||||
mTo = to;
|
||||
mToAlias = hasAliasList() ? getAliasList().getFleetsyncAlias(mTo) : null;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_TO, mTo, mToAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return mMessage;
|
||||
|
||||
@@ -20,6 +20,8 @@ package module.decode.lj1200;
|
||||
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import alias.id.AliasIDType;
|
||||
import channel.metadata.AliasedStringAttributeMonitor;
|
||||
import channel.metadata.Attribute;
|
||||
import channel.metadata.AttributeChangeRequest;
|
||||
import channel.state.DecoderState;
|
||||
@@ -45,12 +47,14 @@ public class LJ1200DecoderState extends DecoderState
|
||||
|
||||
private Set<String> mAddresses = new TreeSet<String>();
|
||||
|
||||
private String mAddress;
|
||||
private Alias mAddressAlias;
|
||||
private AliasedStringAttributeMonitor mAddressAttribute;
|
||||
|
||||
public LJ1200DecoderState(AliasList aliasList)
|
||||
{
|
||||
super(aliasList);
|
||||
|
||||
mAddressAttribute = new AliasedStringAttributeMonitor(Attribute.SECONDARY_ADDRESS_TO,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.LOJACK);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -69,16 +73,6 @@ public class LJ1200DecoderState extends DecoderState
|
||||
{
|
||||
}
|
||||
|
||||
public String getAddress()
|
||||
{
|
||||
return mAddress;
|
||||
}
|
||||
|
||||
public Alias getAddressAlias()
|
||||
{
|
||||
return mAddressAlias;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receive(Message message)
|
||||
{
|
||||
@@ -88,10 +82,10 @@ public class LJ1200DecoderState extends DecoderState
|
||||
|
||||
if(lj.isValid())
|
||||
{
|
||||
setAddress(lj.getAddress());
|
||||
setAddressAlias(lj.getTransponderAlias());
|
||||
String address = lj.getAddress();
|
||||
|
||||
mAddresses.add(mAddress);
|
||||
mAddressAttribute.process(address);
|
||||
mAddresses.add(address);
|
||||
|
||||
broadcast(LJ1200CallEvent.getLJ1200Event(lj));
|
||||
|
||||
@@ -104,21 +98,6 @@ public class LJ1200DecoderState extends DecoderState
|
||||
}
|
||||
}
|
||||
|
||||
private void setAddress(String address)
|
||||
{
|
||||
if(!StringUtils.isEqual(mAddress, address))
|
||||
{
|
||||
mAddress = address;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_TO, mAddress, mAddressAlias));
|
||||
}
|
||||
}
|
||||
|
||||
private void setAddressAlias(Alias alias)
|
||||
{
|
||||
mAddressAlias = alias;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_TO, mAddress, mAddressAlias));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getActivitySummary()
|
||||
{
|
||||
@@ -163,8 +142,7 @@ public class LJ1200DecoderState extends DecoderState
|
||||
|
||||
private void resetState()
|
||||
{
|
||||
mAddress = null;
|
||||
mAddressAlias = null;
|
||||
mAddressAttribute.reset();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,6 +19,9 @@ package module.decode.ltrnet;
|
||||
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import alias.id.AliasIDType;
|
||||
import channel.metadata.AliasedIntegerAttributeMonitor;
|
||||
import channel.metadata.AliasedStringAttributeMonitor;
|
||||
import channel.metadata.Attribute;
|
||||
import channel.metadata.AttributeChangeRequest;
|
||||
import channel.state.DecoderState;
|
||||
@@ -57,10 +60,9 @@ public class LTRNetDecoderState extends DecoderState
|
||||
new HashMap<Integer,Long>();
|
||||
private HashMap<Integer,String> mActiveCalls = new HashMap<Integer,String>();
|
||||
|
||||
private String mToTalkgroup;
|
||||
private Alias mToTalkgroupAlias;
|
||||
private String mFromTalkgroup;
|
||||
private Alias mFromTalkgroupAlias;
|
||||
private AliasedStringAttributeMonitor mToAttribute;
|
||||
private AliasedIntegerAttributeMonitor mFromUIDAttribute;
|
||||
private AliasedStringAttributeMonitor mESNAttribute;
|
||||
private String mMessage;
|
||||
private String mMessageType;
|
||||
private int mChannelNumber;
|
||||
@@ -69,6 +71,16 @@ public class LTRNetDecoderState extends DecoderState
|
||||
public LTRNetDecoderState(AliasList aliasList)
|
||||
{
|
||||
super(aliasList);
|
||||
|
||||
mToAttribute = new AliasedStringAttributeMonitor(Attribute.PRIMARY_ADDRESS_TO,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.TALKGROUP);
|
||||
mToAttribute.addIllegalValue("0-00-000");
|
||||
|
||||
mFromUIDAttribute = new AliasedIntegerAttributeMonitor(Attribute.PRIMARY_ADDRESS_TO,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.LTR_NET_UID);
|
||||
|
||||
mESNAttribute = new AliasedStringAttributeMonitor(Attribute.SECONDARY_ADDRESS_FROM,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.ESN);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -204,8 +216,7 @@ public class LTRNetDecoderState extends DecoderState
|
||||
broadcast(mCurrentCallEvent);
|
||||
}
|
||||
|
||||
setFromTalkgroup(String.valueOf(uniqueID));
|
||||
setFromTalkgroupAlias(ltr.getRadioUniqueIDAlias());
|
||||
mFromUIDAttribute.process(uniqueID);
|
||||
break;
|
||||
case ID_SITE:
|
||||
String siteID = ltr.getSiteID();
|
||||
@@ -243,8 +254,7 @@ public class LTRNetDecoderState extends DecoderState
|
||||
}
|
||||
|
||||
setMessageType("ESN");
|
||||
setFromTalkgroup(ltr.getESN());
|
||||
setFromTalkgroupAlias(ltr.getESNAlias());
|
||||
mESNAttribute.process(ltr.getESN());
|
||||
|
||||
broadcast(new DecoderStateEvent(this, Event.DECODE, State.DATA));
|
||||
|
||||
@@ -272,8 +282,7 @@ public class LTRNetDecoderState extends DecoderState
|
||||
mUniqueIDs.add(uniqueid);
|
||||
|
||||
setMessageType("REGISTER UID");
|
||||
setToTalkgroup(String.valueOf(uniqueid));
|
||||
setToTalkgroupAlias(ltr.getRadioUniqueIDAlias());
|
||||
mFromUIDAttribute.process(uniqueid);
|
||||
|
||||
if(getCurrentLTRCallEvent() == null)
|
||||
{
|
||||
@@ -609,10 +618,11 @@ public class LTRNetDecoderState extends DecoderState
|
||||
|
||||
if(isValidTalkgroup(talkgroup))
|
||||
{
|
||||
mToAttribute.process(talkgroup);
|
||||
|
||||
final LTRCallEvent current = getCurrentLTRCallEvent();
|
||||
|
||||
/* If this is a new call or the talkgroup is different from the current
|
||||
* call, create a new call event */
|
||||
//If this is a new call or the talkgroup is different from the current call, create a new call event
|
||||
if(current == null || isDifferentTalkgroup(talkgroup))
|
||||
{
|
||||
/* Invalidate the current call */
|
||||
@@ -622,22 +632,18 @@ public class LTRNetDecoderState extends DecoderState
|
||||
broadcast(current);
|
||||
}
|
||||
|
||||
setToTalkgroup(message.getTalkgroupID());
|
||||
|
||||
/* A talkgroup must be seen at least once before it will be added
|
||||
* to the mTalkgroups list that is used in the activity summary,
|
||||
* so that we don't pollute the summary with one-off error talkgroups */
|
||||
if(mTalkgroupsFirstHeard.contains(mToTalkgroup))
|
||||
if(mTalkgroupsFirstHeard.contains(talkgroup))
|
||||
{
|
||||
mTalkgroups.add(mToTalkgroup);
|
||||
mTalkgroups.add(talkgroup);
|
||||
}
|
||||
else
|
||||
{
|
||||
mTalkgroupsFirstHeard.add(mToTalkgroup);
|
||||
mTalkgroupsFirstHeard.add(talkgroup);
|
||||
}
|
||||
|
||||
setToTalkgroupAlias(message.getTalkgroupIDAlias());
|
||||
|
||||
CallEvent callEvent = new LTRCallEvent.Builder(DecoderType.LTR_NET, CallEventType.CALL)
|
||||
.aliasList(getAliasList())
|
||||
.channel(String.valueOf(message.getChannel()))
|
||||
@@ -704,71 +710,13 @@ public class LTRNetDecoderState extends DecoderState
|
||||
|
||||
mCurrentCallEvent = null;
|
||||
|
||||
mToTalkgroup = null;
|
||||
|
||||
mToTalkgroupAlias = null;
|
||||
|
||||
mToAttribute.reset();
|
||||
mESNAttribute.reset();
|
||||
mFromUIDAttribute.reset();
|
||||
mMessage = null;
|
||||
mMessageType = null;
|
||||
}
|
||||
|
||||
public String getToTalkgroup()
|
||||
{
|
||||
return mToTalkgroup;
|
||||
}
|
||||
|
||||
public void setToTalkgroup(String toTalkgroup)
|
||||
{
|
||||
if(!StringUtils.isEqual(mToTalkgroup, toTalkgroup))
|
||||
{
|
||||
mToTalkgroup = toTalkgroup;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.PRIMARY_ADDRESS_TO, mToTalkgroup, mToTalkgroupAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getToTalkgroupAlias()
|
||||
{
|
||||
return mToTalkgroupAlias;
|
||||
}
|
||||
|
||||
public void setToTalkgroupAlias(Alias alias)
|
||||
{
|
||||
if(mToTalkgroupAlias == null || (alias != null && mToTalkgroupAlias != alias))
|
||||
{
|
||||
mToTalkgroupAlias = alias;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.PRIMARY_ADDRESS_TO, mToTalkgroup, mToTalkgroupAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public String getFromTalkgroup()
|
||||
{
|
||||
return mFromTalkgroup;
|
||||
}
|
||||
|
||||
public void setFromTalkgroup(String fromTalkgroup)
|
||||
{
|
||||
if(!StringUtils.isEqual(mFromTalkgroup, fromTalkgroup))
|
||||
{
|
||||
mFromTalkgroup = fromTalkgroup;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.PRIMARY_ADDRESS_FROM, mFromTalkgroup,
|
||||
mFromTalkgroupAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getFromTalkgroupAlias()
|
||||
{
|
||||
return mFromTalkgroupAlias;
|
||||
}
|
||||
|
||||
public void setFromTalkgroupAlias(Alias alias)
|
||||
{
|
||||
if(mFromTalkgroupAlias == null || (alias != null && alias != mFromTalkgroupAlias))
|
||||
{
|
||||
mFromTalkgroupAlias = alias;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.PRIMARY_ADDRESS_FROM, mFromTalkgroup,
|
||||
mFromTalkgroupAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return mMessage;
|
||||
|
||||
@@ -20,6 +20,8 @@ package module.decode.ltrstandard;
|
||||
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import alias.id.AliasIDType;
|
||||
import channel.metadata.AliasedStringAttributeMonitor;
|
||||
import channel.metadata.Attribute;
|
||||
import channel.metadata.AttributeChangeRequest;
|
||||
import channel.state.DecoderState;
|
||||
@@ -56,14 +58,16 @@ public class LTRStandardDecoderState extends DecoderState
|
||||
private Set<String> mTalkgroupsFirstHeard = new HashSet<>();
|
||||
private Set<String> mTalkgroups = new TreeSet<>();
|
||||
|
||||
private String mTalkgroup;
|
||||
private Alias mTalkgroupAlias;
|
||||
private AliasedStringAttributeMonitor mTalkgroupAttribute;
|
||||
private long mFrequency;
|
||||
private LCNTracker mLCNTracker = new LCNTracker();
|
||||
|
||||
public LTRStandardDecoderState(AliasList aliasList)
|
||||
{
|
||||
super(aliasList);
|
||||
|
||||
mTalkgroupAttribute = new AliasedStringAttributeMonitor(Attribute.PRIMARY_ADDRESS_TO,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.TALKGROUP);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -134,11 +138,9 @@ public class LTRStandardDecoderState extends DecoderState
|
||||
|
||||
if(mLCNTracker.isCurrentChannel(channel))
|
||||
{
|
||||
setTalkgroup(start.getToID());
|
||||
|
||||
processTalkgroup(mTalkgroup);
|
||||
|
||||
setTalkgroupAlias(start.getToIDAlias());
|
||||
String talkgroup = start.getToID();
|
||||
mTalkgroupAttribute.process(talkgroup);
|
||||
processTalkgroup(talkgroup);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,11 +158,9 @@ public class LTRStandardDecoderState extends DecoderState
|
||||
|
||||
if(mLCNTracker.isCurrentChannel(repeater))
|
||||
{
|
||||
setTalkgroup(end.getToID());
|
||||
|
||||
processTalkgroup(mTalkgroup);
|
||||
|
||||
setTalkgroupAlias(end.getToIDAlias());
|
||||
String talkgroup = end.getToID();
|
||||
mTalkgroupAttribute.process(talkgroup);
|
||||
processTalkgroup(talkgroup);
|
||||
|
||||
LTRCallEvent event = mActiveCalls.remove(repeater);
|
||||
|
||||
@@ -231,36 +231,7 @@ public class LTRStandardDecoderState extends DecoderState
|
||||
|
||||
mActiveCalls.clear();
|
||||
|
||||
mTalkgroup = null;
|
||||
mTalkgroupAlias = null;
|
||||
}
|
||||
|
||||
public String getTalkgroup()
|
||||
{
|
||||
return mTalkgroup;
|
||||
}
|
||||
|
||||
private void setTalkgroup(String talkgroup)
|
||||
{
|
||||
if(!StringUtils.isEqual(mTalkgroup, talkgroup))
|
||||
{
|
||||
mTalkgroup = talkgroup;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.PRIMARY_ADDRESS_TO, mTalkgroup, mTalkgroupAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getTalkgroupAlias()
|
||||
{
|
||||
return mTalkgroupAlias;
|
||||
}
|
||||
|
||||
private void setTalkgroupAlias(Alias alias)
|
||||
{
|
||||
if(mTalkgroupAlias == null || (alias != null && mTalkgroupAlias != alias))
|
||||
{
|
||||
mTalkgroupAlias = alias;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.PRIMARY_ADDRESS_TO, mTalkgroup, mTalkgroupAlias));
|
||||
}
|
||||
mTalkgroupAttribute.reset();
|
||||
}
|
||||
|
||||
public boolean hasChannelNumber()
|
||||
|
||||
@@ -20,6 +20,8 @@ package module.decode.mdc1200;
|
||||
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import alias.id.AliasIDType;
|
||||
import channel.metadata.AliasedStringAttributeMonitor;
|
||||
import channel.metadata.Attribute;
|
||||
import channel.metadata.AttributeChangeRequest;
|
||||
import channel.state.DecoderState;
|
||||
@@ -39,16 +41,16 @@ public class MDCDecoderState extends DecoderState
|
||||
private TreeSet<String> mIdents = new TreeSet<String>();
|
||||
private TreeSet<String> mEmergencyIdents = new TreeSet<String>();
|
||||
|
||||
private String mFrom;
|
||||
private Alias mFromAlias;
|
||||
private String mTo;
|
||||
private Alias mToAlias;
|
||||
private AliasedStringAttributeMonitor mFromAttribute;
|
||||
private String mMessage;
|
||||
private String mMessageType;
|
||||
|
||||
public MDCDecoderState(AliasList aliasList)
|
||||
{
|
||||
super(aliasList);
|
||||
|
||||
mFromAttribute = new AliasedStringAttributeMonitor(Attribute.SECONDARY_ADDRESS_FROM,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.MDC1200);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -78,10 +80,7 @@ public class MDCDecoderState extends DecoderState
|
||||
|
||||
private void resetState()
|
||||
{
|
||||
mFrom = null;
|
||||
mFromAlias = null;
|
||||
mTo = null;
|
||||
mToAlias = null;
|
||||
mFromAttribute.reset();
|
||||
mMessage = null;
|
||||
mMessageType = null;
|
||||
}
|
||||
@@ -100,8 +99,7 @@ public class MDCDecoderState extends DecoderState
|
||||
mEmergencyIdents.add(mdc.getUnitID());
|
||||
}
|
||||
|
||||
setFrom(mdc.getFromID());
|
||||
setFromAlias(mdc.getFromIDAlias());
|
||||
mFromAttribute.process(mdc.getFromID());
|
||||
|
||||
MDCMessageType type = mdc.getMessageType();
|
||||
|
||||
@@ -145,62 +143,6 @@ public class MDCDecoderState extends DecoderState
|
||||
}
|
||||
}
|
||||
|
||||
public String getFrom()
|
||||
{
|
||||
return mFrom;
|
||||
}
|
||||
|
||||
public void setFrom(String from)
|
||||
{
|
||||
if(!StringUtils.isEqual(mFrom, from))
|
||||
{
|
||||
mFrom = from;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_FROM, mFrom, mFromAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getFromAlias()
|
||||
{
|
||||
return mFromAlias;
|
||||
}
|
||||
|
||||
public void setFromAlias(Alias alias)
|
||||
{
|
||||
if(mFromAlias == null || (alias != null && mFromAlias != alias))
|
||||
{
|
||||
mFromAlias = alias;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_FROM, mFrom, mFromAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public String getTo()
|
||||
{
|
||||
return mTo;
|
||||
}
|
||||
|
||||
public void setTo(String to)
|
||||
{
|
||||
if(!StringUtils.isEqual(mTo, to))
|
||||
{
|
||||
mTo = to;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_TO, mTo, mToAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getToAlias()
|
||||
{
|
||||
return mToAlias;
|
||||
}
|
||||
|
||||
public void setToAlias(Alias alias)
|
||||
{
|
||||
if(mToAlias == null || (alias != null && mToAlias != alias))
|
||||
{
|
||||
mToAlias = alias;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_TO, mTo, mToAlias));
|
||||
}
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return mMessage;
|
||||
|
||||
@@ -20,6 +20,8 @@ package module.decode.mpt1327;
|
||||
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import alias.id.AliasIDType;
|
||||
import channel.metadata.AliasedStringAttributeMonitor;
|
||||
import channel.metadata.Attribute;
|
||||
import channel.metadata.AttributeChangeRequest;
|
||||
import channel.state.ChangeChannelTimeoutEvent;
|
||||
@@ -56,8 +58,8 @@ public class MPT1327DecoderState extends DecoderState
|
||||
private HashMap<String,ArrayList<String>> mGroups = new HashMap<String,ArrayList<String>>();
|
||||
|
||||
private String mSite;
|
||||
private String mFromTalkgroup;
|
||||
private String mToTalkgroup;
|
||||
private AliasedStringAttributeMonitor mFromAttribute;
|
||||
private AliasedStringAttributeMonitor mToAttribute;
|
||||
|
||||
private int mChannelNumber;
|
||||
private ChannelType mChannelType;
|
||||
@@ -73,6 +75,10 @@ public class MPT1327DecoderState extends DecoderState
|
||||
mChannelMap = channelMap;
|
||||
mChannelType = channelType;
|
||||
mCallTimeout = callTimeout;
|
||||
mFromAttribute = new AliasedStringAttributeMonitor(Attribute.PRIMARY_ADDRESS_FROM,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.MPT1327);
|
||||
mToAttribute = new AliasedStringAttributeMonitor(Attribute.PRIMARY_ADDRESS_TO,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.MPT1327);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -277,7 +283,7 @@ public class MPT1327DecoderState extends DecoderState
|
||||
broadcast(mCurrentCallEvent);
|
||||
}
|
||||
|
||||
setToTalkgroup(mpt.getToID());
|
||||
mToAttribute.process(mpt.getToID());
|
||||
|
||||
broadcast(new DecoderStateEvent(this, Event.START, State.CALL));
|
||||
}
|
||||
@@ -298,8 +304,8 @@ public class MPT1327DecoderState extends DecoderState
|
||||
|
||||
private void resetState()
|
||||
{
|
||||
mFromTalkgroup = null;
|
||||
mToTalkgroup = null;
|
||||
mFromAttribute.reset();
|
||||
mToAttribute.reset();
|
||||
|
||||
/**
|
||||
* If this is a standard channel, reset the fade timeout to the default
|
||||
@@ -359,67 +365,6 @@ public class MPT1327DecoderState extends DecoderState
|
||||
mChannelMap = channelMap;
|
||||
}
|
||||
|
||||
public String getFromTalkgroup()
|
||||
{
|
||||
return mFromTalkgroup;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the talkgroup. This is used primarily for traffic channels since
|
||||
* the talkgroup will already have been identified prior to the traffic
|
||||
* channel being created.
|
||||
*/
|
||||
public void setFromTalkgroup(String fromTalkgroup)
|
||||
{
|
||||
if(!StringUtils.isEqual(mFromTalkgroup, fromTalkgroup))
|
||||
{
|
||||
mFromTalkgroup = fromTalkgroup;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.PRIMARY_ADDRESS_FROM, mFromTalkgroup,
|
||||
getFromTalkgroupAlias()));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getFromTalkgroupAlias()
|
||||
{
|
||||
if(hasAliasList())
|
||||
{
|
||||
return getAliasList().getMPT1327Alias(mFromTalkgroup);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getToTalkgroup()
|
||||
{
|
||||
return mToTalkgroup;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the talkgroup. This is used primarily for traffic channels since
|
||||
* the talkgroup will already have been identified prior to the traffic
|
||||
* channel being created.
|
||||
*/
|
||||
public void setToTalkgroup(String toTalkgroup)
|
||||
{
|
||||
if(!StringUtils.isEqual(mToTalkgroup, toTalkgroup))
|
||||
{
|
||||
mToTalkgroup = toTalkgroup;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.PRIMARY_ADDRESS_TO, mToTalkgroup,
|
||||
getToTalkgroupAlias()));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getToTalkgroupAlias()
|
||||
{
|
||||
if(hasAliasList())
|
||||
{
|
||||
return getAliasList().getMPT1327Alias(mToTalkgroup);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public int getChannelNumber()
|
||||
{
|
||||
return mChannelNumber;
|
||||
@@ -588,6 +533,8 @@ public class MPT1327DecoderState extends DecoderState
|
||||
TrafficChannelAllocationEvent allocationEvent =
|
||||
(TrafficChannelAllocationEvent) event;
|
||||
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.CHANNEL_CONFIGURATION_LABEL_1, "TRAFFIC"));
|
||||
|
||||
String channel = allocationEvent.getCallEvent().getChannel();
|
||||
|
||||
if(channel != null)
|
||||
@@ -606,8 +553,8 @@ public class MPT1327DecoderState extends DecoderState
|
||||
broadcast(new AttributeChangeRequest<Long>(Attribute.CHANNEL_FREQUENCY,
|
||||
allocationEvent.getCallEvent().getFrequency()));
|
||||
|
||||
setFromTalkgroup(allocationEvent.getCallEvent().getFromID());
|
||||
setToTalkgroup(allocationEvent.getCallEvent().getToID());
|
||||
mFromAttribute.process(allocationEvent.getCallEvent().getFromID());
|
||||
mToAttribute.process(allocationEvent.getCallEvent().getToID());
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -3669,8 +3669,9 @@ public class P25DecoderState extends DecoderState
|
||||
{
|
||||
if(event instanceof TrafficChannelAllocationEvent)
|
||||
{
|
||||
TrafficChannelAllocationEvent allocationEvent =
|
||||
(TrafficChannelAllocationEvent) event;
|
||||
TrafficChannelAllocationEvent allocationEvent = (TrafficChannelAllocationEvent) event;
|
||||
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.CHANNEL_CONFIGURATION_LABEL_1, "TRAFFIC"));
|
||||
|
||||
mCurrentCallEvent = (P25CallEvent) allocationEvent.getCallEvent();
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ package module.decode.passport;
|
||||
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import alias.id.AliasIDType;
|
||||
import channel.metadata.AliasedStringAttributeMonitor;
|
||||
import channel.metadata.Attribute;
|
||||
import channel.metadata.AttributeChangeRequest;
|
||||
import channel.state.DecoderState;
|
||||
@@ -32,7 +34,6 @@ import module.decode.event.CallEvent;
|
||||
import module.decode.event.CallEvent.CallEventType;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -53,10 +54,8 @@ public class PassportDecoderState extends DecoderState
|
||||
private HashMap<Integer,String> mSiteLCNs = new HashMap<Integer,String>();
|
||||
private HashMap<Integer,String> mNeighborLCNs = new HashMap<Integer,String>();
|
||||
|
||||
private String mTalkgroup;
|
||||
private Alias mTalkgroupAlias;
|
||||
private String mMobileID;
|
||||
private Alias mMobileIDAlias;
|
||||
private AliasedStringAttributeMonitor mFromMobileIDAttribute;
|
||||
private AliasedStringAttributeMonitor mToTalkgroupAttribute;
|
||||
private int mChannelNumber;
|
||||
private int mSiteNumber;
|
||||
private PassportBand mSiteBand;
|
||||
@@ -66,6 +65,11 @@ public class PassportDecoderState extends DecoderState
|
||||
public PassportDecoderState(AliasList aliasList)
|
||||
{
|
||||
super(aliasList);
|
||||
|
||||
mFromMobileIDAttribute = new AliasedStringAttributeMonitor(Attribute.PRIMARY_ADDRESS_FROM,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.MIN);
|
||||
mToTalkgroupAttribute = new AliasedStringAttributeMonitor(Attribute.PRIMARY_ADDRESS_TO,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.TALKGROUP);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -146,7 +150,7 @@ public class PassportDecoderState extends DecoderState
|
||||
/* Call on this channel */
|
||||
if(passport.getLCN() == mChannelNumber)
|
||||
{
|
||||
setTalkgroup(talkgroup);
|
||||
mToTalkgroupAttribute.process(talkgroup);
|
||||
|
||||
PassportCallEvent current = getCurrentCallEvent();
|
||||
|
||||
@@ -207,7 +211,7 @@ public class PassportDecoderState extends DecoderState
|
||||
String.valueOf(passport.getTalkgroupID());
|
||||
|
||||
logTalkgroup(endTalkgroup);
|
||||
setTalkgroup(endTalkgroup);
|
||||
mToTalkgroupAttribute.process(endTalkgroup);
|
||||
|
||||
broadcast(new DecoderStateEvent(this,
|
||||
Event.END, State.CALL));
|
||||
@@ -234,11 +238,11 @@ public class PassportDecoderState extends DecoderState
|
||||
{
|
||||
setChannelNumber(passport.getLCN());
|
||||
}
|
||||
|
||||
|
||||
/* Data call on this channel */
|
||||
if(passport.getLCN() == mChannelNumber)
|
||||
{
|
||||
setTalkgroup(dataTalkgroup);
|
||||
mToTalkgroupAttribute.process(dataTalkgroup);
|
||||
|
||||
PassportCallEvent current = getCurrentCallEvent();
|
||||
|
||||
@@ -299,7 +303,7 @@ public class PassportDecoderState extends DecoderState
|
||||
String.valueOf(passport.getTalkgroupID());
|
||||
|
||||
logTalkgroup(dataEndTalkgroup);
|
||||
setTalkgroup(dataEndTalkgroup);
|
||||
mToTalkgroupAttribute.process(dataEndTalkgroup);
|
||||
|
||||
broadcast(new DecoderStateEvent(this,
|
||||
Event.END, State.DATA));
|
||||
@@ -321,7 +325,7 @@ public class PassportDecoderState extends DecoderState
|
||||
mMobileIDs.add(min);
|
||||
}
|
||||
|
||||
setMobileID(min);
|
||||
mFromMobileIDAttribute.process(min);
|
||||
|
||||
final CallEvent current = getCurrentCallEvent();
|
||||
|
||||
@@ -519,10 +523,8 @@ public class PassportDecoderState extends DecoderState
|
||||
|
||||
private void resetState()
|
||||
{
|
||||
mTalkgroup = null;
|
||||
mTalkgroupAlias = null;
|
||||
mMobileID = null;
|
||||
mMobileIDAlias = null;
|
||||
mToTalkgroupAttribute.reset();
|
||||
mFromMobileIDAttribute.reset();
|
||||
}
|
||||
|
||||
public int getChannelNumber()
|
||||
@@ -568,48 +570,6 @@ public class PassportDecoderState extends DecoderState
|
||||
}
|
||||
}
|
||||
|
||||
public String getTalkgroup()
|
||||
{
|
||||
return mTalkgroup;
|
||||
}
|
||||
|
||||
public void setTalkgroup(String talkgroup)
|
||||
{
|
||||
if(!StringUtils.isEqual(mTalkgroup, talkgroup))
|
||||
{
|
||||
mTalkgroup = talkgroup;
|
||||
mTalkgroupAlias = hasAliasList() ? getAliasList().getTalkgroupAlias(getTalkgroup()) : null;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.PRIMARY_ADDRESS_TO, getTalkgroup(),
|
||||
getTalkgroupAlias()));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getTalkgroupAlias()
|
||||
{
|
||||
return mTalkgroupAlias;
|
||||
}
|
||||
|
||||
public String getMobileID()
|
||||
{
|
||||
return mMobileID;
|
||||
}
|
||||
|
||||
public void setMobileID(String id)
|
||||
{
|
||||
if(!StringUtils.isEqual(mMobileID, id))
|
||||
{
|
||||
mMobileID = id;
|
||||
mMobileIDAlias = hasAliasList() ? getAliasList().getMobileIDNumberAlias(getMobileID()) : null;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.PRIMARY_ADDRESS_FROM, getMobileID(),
|
||||
getMobileIDAlias()));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getMobileIDAlias()
|
||||
{
|
||||
return mMobileIDAlias;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveDecoderStateEvent(DecoderStateEvent event)
|
||||
{
|
||||
|
||||
@@ -20,6 +20,8 @@ package module.decode.tait;
|
||||
|
||||
import alias.Alias;
|
||||
import alias.AliasList;
|
||||
import alias.id.AliasIDType;
|
||||
import channel.metadata.AliasedStringAttributeMonitor;
|
||||
import channel.metadata.Attribute;
|
||||
import channel.metadata.AttributeChangeRequest;
|
||||
import channel.state.DecoderState;
|
||||
@@ -42,18 +44,19 @@ public class Tait1200DecoderState extends DecoderState
|
||||
{
|
||||
private TreeSet<String> mIdents = new TreeSet<String>();
|
||||
|
||||
private String mFrom;
|
||||
private Alias mFromAlias;
|
||||
|
||||
private String mTo;
|
||||
private Alias mToAlias;
|
||||
|
||||
private AliasedStringAttributeMonitor mFromAttribute;
|
||||
private AliasedStringAttributeMonitor mToAttribute;
|
||||
private String mMessage;
|
||||
private String mMessageType;
|
||||
|
||||
public Tait1200DecoderState(AliasList aliasList)
|
||||
{
|
||||
super(aliasList);
|
||||
|
||||
mFromAttribute = new AliasedStringAttributeMonitor(Attribute.SECONDARY_ADDRESS_FROM,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.TALKGROUP);
|
||||
mToAttribute = new AliasedStringAttributeMonitor(Attribute.SECONDARY_ADDRESS_TO,
|
||||
getAttributeChangeRequestListener(), getAliasList(), AliasIDType.TALKGROUP);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -82,10 +85,8 @@ public class Tait1200DecoderState extends DecoderState
|
||||
|
||||
private void resetState()
|
||||
{
|
||||
mFrom = null;
|
||||
mFromAlias = null;
|
||||
mTo = null;
|
||||
mToAlias = null;
|
||||
mFromAttribute.reset();
|
||||
mToAttribute.reset();
|
||||
mMessage = null;
|
||||
mMessageType = null;
|
||||
}
|
||||
@@ -97,12 +98,10 @@ public class Tait1200DecoderState extends DecoderState
|
||||
{
|
||||
Tait1200GPSMessage gps = (Tait1200GPSMessage) message;
|
||||
|
||||
setFromID(gps.getFromID());
|
||||
setFromIDAlias(gps.getFromIDAlias());
|
||||
mFromAttribute.process(gps.getFromID());
|
||||
mIdents.add(gps.getFromID());
|
||||
|
||||
setToID(gps.getToID());
|
||||
setToIDAlias(gps.getToIDAlias());
|
||||
mToAttribute.process(gps.getToID());
|
||||
mIdents.add(gps.getToID());
|
||||
|
||||
GeoPosition position = gps.getGPSLocation();
|
||||
@@ -123,13 +122,10 @@ public class Tait1200DecoderState extends DecoderState
|
||||
else if(message instanceof Tait1200ANIMessage)
|
||||
{
|
||||
Tait1200ANIMessage ani = (Tait1200ANIMessage) message;
|
||||
|
||||
setFromID(ani.getFromID());
|
||||
setFromIDAlias(ani.getFromIDAlias());
|
||||
mFromAttribute.process(ani.getFromID());
|
||||
mIdents.add(ani.getFromID());
|
||||
|
||||
setToID(ani.getToID());
|
||||
setToIDAlias(ani.getToIDAlias());
|
||||
mToAttribute.process(ani.getToID());
|
||||
mIdents.add(ani.getToID());
|
||||
|
||||
setMessage(null);
|
||||
@@ -202,62 +198,6 @@ public class Tait1200DecoderState extends DecoderState
|
||||
}
|
||||
}
|
||||
|
||||
public String getFromID()
|
||||
{
|
||||
return mFrom;
|
||||
}
|
||||
|
||||
public void setFromID(String from)
|
||||
{
|
||||
if(!StringUtils.isEqual(mFrom, from))
|
||||
{
|
||||
mFrom = from;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_FROM, getFromID(), getFromIDAlias()));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getFromIDAlias()
|
||||
{
|
||||
return mFromAlias;
|
||||
}
|
||||
|
||||
public void setFromIDAlias(Alias alias)
|
||||
{
|
||||
if(mFromAlias == null || (alias != null && mFromAlias != alias))
|
||||
{
|
||||
mFromAlias = alias;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_FROM, getFromID(), getFromIDAlias()));
|
||||
}
|
||||
}
|
||||
|
||||
public String getToID()
|
||||
{
|
||||
return mTo;
|
||||
}
|
||||
|
||||
public void setToID(String to)
|
||||
{
|
||||
if(!StringUtils.isEqual(mTo, to))
|
||||
{
|
||||
mTo = to;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_TO, getToID(), getToIDAlias()));
|
||||
}
|
||||
}
|
||||
|
||||
public Alias getToIDAlias()
|
||||
{
|
||||
return mToAlias;
|
||||
}
|
||||
|
||||
public void setToIDAlias(Alias alias)
|
||||
{
|
||||
if(mToAlias == null || (alias != null && mToAlias != alias))
|
||||
{
|
||||
mToAlias = alias;
|
||||
broadcast(new AttributeChangeRequest<String>(Attribute.SECONDARY_ADDRESS_TO, getToID(), getToIDAlias()));
|
||||
}
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return mMessage;
|
||||
|
||||
Reference in New Issue
Block a user