@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		// unconfirmed wrapper?
		if (!confirmed) sb.append("[Unconfirmed: ");
		// add time
		sb.append("Time T+").append(time).append(". ");
		// internal/external?
		if (threatPosition == THREAT_POSITION_INTERNAL) {
			if (threatLevel == THREAT_LEVEL_SERIOUS) {
				sb.append("Serious internal threat");
			} else sb.append("Internal threat");
		} else if (threatLevel == THREAT_LEVEL_SERIOUS) {
			sb.append("Serious threat");
		} else sb.append("Threat");
		sb.append('.');
		if (threatPosition != THREAT_POSITION_INTERNAL) {
			sb.append(" Zone ");
			switch (sector) {
			case THREAT_SECTOR_BLUE: sb.append("blue"); break;
			case THREAT_SECTOR_WHITE: sb.append("white"); break;
			case THREAT_SECTOR_RED: sb.append("red"); break;
			default: sb.append("unknown");
			}
			sb.append('.');
		}
		if (!confirmed) sb.append(']');

		/*s.append("Threat [");
		// unconfirmed?
		if (!confirmed) s.append("unconfirmed ");
		// position?
		switch (threatPosition) {
		case THREAT_POSITION_EXTERNAL: break;
		case THREAT_POSITION_INTERNAL: s.append("internal "); break;
		default: s.append("non-positioned ");
		}
		// add level
		switch (threatLevel) {
		case THREAT_LEVEL_NORMAL: s.append("threat"); break;
		case THREAT_LEVEL_SERIOUS: s.append("serious threat"); break;
		default: s.append("unknown threat");
		}
		s.append("; T+");
		s.append(time);
		if (threatPosition != THREAT_POSITION_INTERNAL) {
			s.append(" in sector ");
			switch (sector) {
			case THREAT_SECTOR_BLUE: s.append("blue"); break;
			case THREAT_SECTOR_WHITE: s.append("white"); break;
			case THREAT_SECTOR_RED: s.append("red"); break;
			default: s.append("unknown");
			}
		}
		s.append(']');*/
		
		return sb.toString();
	}