diff --git a/README.md b/README.md index 990d875..bc073c5 100644 --- a/README.md +++ b/README.md @@ -32,5 +32,4 @@ https://www.thebluealliance.com/avatars ### Screenshots |Match scouting interface|Field editor|Teams data viewer| |-|-|-| -|![Screenshot1](https://github.com/Team4388/ScoutingApp2025/blob/main/metadata/en-US/images/phoneScreenshots/1.png?raw=true)|![Screenshot2](https://github.com/Team4388/ScoutingApp2025/blob/main/metadata/en-US/images/phoneScreenshots/2.png?raw=true)|![Screenshot3](https://github.com/Team4388/ScoutingApp2025/blob/main/metadata/en-US/images/phoneScreenshots/3.png?raw=true)| -z \ No newline at end of file +|![Screenshot1](https://github.com/Team4388/ScoutingApp2025/blob/main/metadata/en-US/images/phoneScreenshots/1.png?raw=true)|![Screenshot2](https://github.com/Team4388/ScoutingApp2025/blob/main/metadata/en-US/images/phoneScreenshots/2.png?raw=true)|![Screenshot3](https://github.com/Team4388/ScoutingApp2025/blob/main/metadata/en-US/images/phoneScreenshots/3.png?raw=true)| \ No newline at end of file diff --git a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java index 2ae854e..029352a 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java @@ -60,61 +60,57 @@ public class ScoutingDataWriter { public ScoutingArray data; } - public static ParsedScoutingDataResult load(String filename, FieldType[][] values , TransferType[][] transferValues){ + public static ParsedScoutingDataResult load(String filename, FieldType[][] values , TransferType[][] transferValues) throws BuiltByteParser.byteParsingExeption{ byte[] bytes = FileEditor.readFile(filename); BuiltByteParser bbp = new BuiltByteParser(bytes); - try { - ArrayList objects = bbp.parse(); - RawDataType[] rawDataTypes = new RawDataType[objects.size()-2]; +// try { + ArrayList objects = bbp.parse(); + RawDataType[] rawDataTypes = new RawDataType[objects.size()-2]; - int version = ((int)objects.get(0).get()); + int version = ((int)objects.get(0).get()); - if(values.length <= version) { + if(values.length <= version) { // AlertManager.addSimpleError("Error loading " + filename); - AlertManager.error(new BuiltByteParser.byteParsingExeption("Field version (" +version + ") is too recent as compared to latest version (" + (values.length-1) + ")!")); - return null; - } + throw new BuiltByteParser.byteParsingExeption("Field version (" +version + ") is too recent as compared to latest version (" + (values.length-1) + ")!"); + } // System.out.println(version); - String username = (String) objects.get(1).get(); + String username = (String) objects.get(1).get(); - for(int i = 0; i < values[version].length; i++){ - switch (objects.get(i+2).getType()){ - case 1: // Int - rawDataTypes[i] = IntType.newNull(values[version][i].UUID); - rawDataTypes[i].forceSetValue(objects.get(i+2).get()); - Log.i(ParsedScoutingDataResult.class.toString(),"Loaded INT: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ rawDataTypes[i].get() +")"); - break; - case 2: // String - rawDataTypes[i] = StringType.newNull(values[version][i].UUID); - rawDataTypes[i].forceSetValue(objects.get(i+2).get()); - Log.i(ParsedScoutingDataResult.class.toString(),"Loaded STR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ rawDataTypes[i].get() +")"); - break; - case 3: // Int array - rawDataTypes[i] = IntArrType.newNull(values[version][i].UUID); - rawDataTypes[i].forceSetValue(objects.get(i+2).get()); - Log.i(ParsedScoutingDataResult.class.toString(),"Loaded intARR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ Arrays.toString((int[]) rawDataTypes[i].get()) +")"); - break; - } + for(int i = 0; i < values[version].length; i++){ + switch (objects.get(i+2).getType()){ + case 1: // Int + rawDataTypes[i] = IntType.newNull(values[version][i].UUID); + rawDataTypes[i].forceSetValue(objects.get(i+2).get()); + Log.i(ParsedScoutingDataResult.class.toString(),"Loaded INT: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ rawDataTypes[i].get() +")"); + break; + case 2: // String + rawDataTypes[i] = StringType.newNull(values[version][i].UUID); + rawDataTypes[i].forceSetValue(objects.get(i+2).get()); + Log.i(ParsedScoutingDataResult.class.toString(),"Loaded STR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ rawDataTypes[i].get() +")"); + break; + case 3: // Int array + rawDataTypes[i] = IntArrType.newNull(values[version][i].UUID); + rawDataTypes[i].forceSetValue(objects.get(i+2).get()); + Log.i(ParsedScoutingDataResult.class.toString(),"Loaded intARR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ Arrays.toString((int[]) rawDataTypes[i].get()) +")"); + break; } - - ScoutingArray msa = new ScoutingArray(version, rawDataTypes, values, transferValues); - msa.update(); - - ParsedScoutingDataResult psda = new ParsedScoutingDataResult(); - - psda.filename = filename; - psda.username = username; - psda.version = version; - psda.data = msa; - - return psda; - - } catch (BuiltByteParser.byteParsingExeption e){ - AlertManager.error(e); - return null; } + + ScoutingArray msa = new ScoutingArray(version, rawDataTypes, values, transferValues); + msa.update(); + + ParsedScoutingDataResult psda = new ParsedScoutingDataResult(); + + psda.filename = filename; + psda.username = username; + psda.version = version; + psda.data = msa; + + return psda; + +// } } // A function that takes in a list of names seperated by commas, and adds a name if it is not included diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java index 76a5a64..acd65b6 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java @@ -23,6 +23,7 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import com.ridgebotics.ridgescout.utility.AlertManager; +import com.ridgebotics.ridgescout.utility.BuiltByteParser; import com.ridgebotics.ridgescout.utility.SettingsManager; import com.ridgebotics.ridgescout.databinding.FragmentDataTeamsBinding; import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter; @@ -97,7 +98,7 @@ public class TeamsFragment extends Fragment { try {add_match_data(team, mode);}catch(Exception e){AlertManager.error(e);} } - public void add_pit_data(frcTeam team){ + public void add_pit_data(frcTeam team) throws BuiltByteParser.byteParsingExeption { binding.pitArea.removeAllViews(); final String filename = evcode+"-"+team.teamNumber+".pitscoutdata"; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MatchScoutingFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MatchScoutingFragment.java index be0acb8..c02f159 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MatchScoutingFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MatchScoutingFragment.java @@ -21,6 +21,7 @@ import androidx.fragment.app.Fragment; import com.google.android.material.divider.MaterialDivider; import com.ridgebotics.ridgescout.ui.views.ToggleTitleView; +import com.ridgebotics.ridgescout.utility.BuiltByteParser; import com.ridgebotics.ridgescout.utility.SettingsManager; import com.ridgebotics.ridgescout.databinding.FragmentScoutingMatchBinding; import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter; @@ -347,7 +348,7 @@ public class MatchScoutingFragment extends Fragment { - public void get_fields(){ + public void get_fields() throws BuiltByteParser.byteParsingExeption{ ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.match_values, DataManager.match_transferValues); RawDataType[] types = psdr.data.array; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitScoutingFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitScoutingFragment.java index 65dd2ec..9acdb05 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitScoutingFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitScoutingFragment.java @@ -23,6 +23,7 @@ import com.google.android.material.divider.MaterialDivider; import com.ridgebotics.ridgescout.ui.views.PitScoutingIndicator; import com.ridgebotics.ridgescout.ui.views.ToggleTitleView; import com.ridgebotics.ridgescout.utility.AlertManager; +import com.ridgebotics.ridgescout.utility.BuiltByteParser; import com.ridgebotics.ridgescout.utility.SettingsManager; import com.ridgebotics.ridgescout.databinding.FragmentScoutingPitBinding; import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter; @@ -224,7 +225,7 @@ public class PitScoutingFragment extends Fragment { } } - public void get_fields(){ + public void get_fields() throws BuiltByteParser.byteParsingExeption{ ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, pit_values, pit_transferValues); RawDataType[] types = psdr.data.array; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/SettingsFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/SettingsFragment.java index e3aab02..61af482 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/SettingsFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/SettingsFragment.java @@ -30,6 +30,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.CheckBox; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ScrollView; @@ -51,6 +52,7 @@ import com.ridgebotics.ridgescout.databinding.FragmentSettingsBinding; import com.ridgebotics.ridgescout.scoutingData.Fields; import com.ridgebotics.ridgescout.ui.views.CustomSpinnerView; import com.ridgebotics.ridgescout.ui.views.TallyCounterView; +import com.ridgebotics.ridgescout.utility.AlertManager; import com.ridgebotics.ridgescout.utility.DataManager; import com.ridgebotics.ridgescout.utility.FileEditor; import com.ridgebotics.ridgescout.utility.SettingsManager; @@ -88,7 +90,20 @@ public class SettingsFragment extends Fragment { ButtonSettingsItem corruptButton = new ButtonSettingsItem(); - corruptButton.addButton("Remove corrupted files", view -> {}); + corruptButton.addButton("find corrupted files", view -> { + new Thread(() -> { + AlertManager.startLoading("Loading files..."); + List filenames = FileEditor.findCorruptedFiles(); + AlertManager.stopLoading(); + getActivity().runOnUiThread(() -> { + deleteFiles(filenames, true); + }); + }).start(); + }); + corruptButton.addButton("delete files", view -> { + deleteFiles(Arrays.asList(FileEditor.getFiles()), false); + }); +// corruptButton.setEnabled(!getEVCode().equals("unset")); manager.addItem(corruptButton); manager.addItem(new HeaderSettingsItem("Advanced")); @@ -242,6 +257,36 @@ public class SettingsFragment extends Fragment { alert.create().show(); } + private void deleteFiles(List files, boolean defaultOption) { + ScrollView sv = new ScrollView(getContext()); + LinearLayout ll = new LinearLayout(getContext()); + ll.setOrientation(VERTICAL); + sv.addView(ll); + + CheckBox[] checkboxes = new CheckBox[files.size()]; + + for(int i =0; i < files.size(); i++){ + CheckBox cb = new CheckBox(getContext()); + cb.setText(files.get(i)); + cb.setChecked(defaultOption); + ll.addView(cb); + checkboxes[i] = cb; + } + + + AlertDialog.Builder alert = new AlertDialog.Builder(getContext()); + alert.setTitle("Delete files"); + alert.setView(sv); + alert.setNeutralButton("Cancel", null); +// alert.setPositiveButton("Save", (dialogInterface, i) -> { +// DataManager.scoutNotice = editText.getText().toString(); +// DataManager.save_scout_notice(); +// }); + alert.setCancelable(false); + + alert.create().show(); + } + diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerAdapter.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerAdapter.java deleted file mode 100644 index a51b763..0000000 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerAdapter.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.ridgebotics.ridgescout.ui.views; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import androidx.recyclerview.widget.RecyclerView; -import java.util.ArrayList; -import java.util.List; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import androidx.recyclerview.widget.RecyclerView; -import java.util.ArrayList; -import java.util.List; - -public class RecyclerAdapter extends RecyclerView.Adapter> { - private List items; - private final int layoutResId; - private final RecyclerHolderFactory viewHolderFactory; - private RecyclerClickListener onItemClickListener; - - public RecyclerAdapter(int layoutResId, RecyclerHolderFactory viewHolderFactory) { - this.items = new ArrayList<>(); - this.layoutResId = layoutResId; - this.viewHolderFactory = viewHolderFactory; - } - - @Override - public RecyclerHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(layoutResId, parent, false); - return viewHolderFactory.createViewHolder(view); - } - - @Override - public void onBindViewHolder(RecyclerHolder holder, int position) { - T item = items.get(position); - holder.bind(item, position); - holder.setOnItemClickListener(item, onItemClickListener); - } - - @Override - public int getItemCount() { - return items.size(); - } - - // List management methods - public void setItems(List newItems) { - this.items.clear(); - if (newItems != null) { - this.items.addAll(newItems); - } - notifyDataSetChanged(); - } - - public void addItem(T item) { - items.add(item); - notifyItemInserted(items.size() - 1); - } - - public void addItem(int position, T item) { - items.add(position, item); - notifyItemInserted(position); - } - - public void removeItem(int position) { - if (position >= 0 && position < items.size()) { - items.remove(position); - notifyItemRemoved(position); - } - } - - public void removeItem(T item) { - int position = items.indexOf(item); - if (position != -1) { - removeItem(position); - } - } - - public void updateItem(int position, T item) { - if (position >= 0 && position < items.size()) { - items.set(position, item); - notifyItemChanged(position); - } - } - - public void clear() { - int size = items.size(); - items.clear(); - notifyItemRangeRemoved(0, size); - } - - public T getItem(int position) { - return items.get(position); - } - - public List getItems() { - return new ArrayList<>(items); - } - - public void setOnItemClickListener(RecyclerClickListener listener) { - this.onItemClickListener = listener; - } -} diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerClickListener.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerClickListener.java deleted file mode 100644 index 14c97d7..0000000 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerClickListener.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.ridgebotics.ridgescout.ui.views; - -public interface RecyclerClickListener { - void onItemClick(T item, int position); -} \ No newline at end of file diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerHolder.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerHolder.java deleted file mode 100644 index c98c7c8..0000000 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerHolder.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ridgebotics.ridgescout.ui.views; - -import android.view.View; -import androidx.recyclerview.widget.RecyclerView; - -public abstract class RecyclerHolder extends RecyclerView.ViewHolder { - public RecyclerHolder(View itemView) { - super(itemView); - } - - public abstract void bind(T item, int position); - - // Optional method for handling item clicks - public void setOnItemClickListener(T item, RecyclerClickListener listener) { - if (listener != null) { - itemView.setOnClickListener(v -> listener.onItemClick(item, getAdapterPosition())); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerHolderFactory.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerHolderFactory.java deleted file mode 100644 index 2be4e9f..0000000 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerHolderFactory.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.ridgebotics.ridgescout.ui.views; - -import android.view.View; - -public interface RecyclerHolderFactory { - RecyclerHolder createViewHolder(View itemView); -} diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerList.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerList.java deleted file mode 100644 index 1abe293..0000000 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/RecyclerList.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.ridgebotics.ridgescout.ui.views; - -import android.content.Context; -import android.util.AttributeSet; -import android.view.View; - -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.GridLayoutManager; -import java.util.List; - -public class RecyclerList extends RecyclerView { - private RecyclerAdapter adapter; - - public RecyclerList(Context context) { - super(context); - init(); - } - - public RecyclerList(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - public RecyclerList(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - init(); - } - - private void init() { - // Set default layout manager - setLayoutManager(new LinearLayoutManager(getContext())); - - // Enable optimizations - setHasFixedSize(true); - setItemViewCacheSize(20); - setDrawingCacheEnabled(true); - setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); - } - - // Setup method to configure the RecyclerView - public RecyclerList setup(int layoutResId, RecyclerHolderFactory RecyclerHolderFactory) { - adapter = new RecyclerAdapter<>(layoutResId, RecyclerHolderFactory); - setAdapter(adapter); - return this; - } - - // Layout manager convenience methods - public RecyclerList withLinearLayout() { - setLayoutManager(new LinearLayoutManager(getContext())); - return this; - } - - public RecyclerList withLinearLayout(int orientation) { - setLayoutManager(new LinearLayoutManager(getContext(), orientation, false)); - return this; - } - - public RecyclerList withGridLayout(int spanCount) { - setLayoutManager(new GridLayoutManager(getContext(), spanCount)); - return this; - } - - public RecyclerList withDivider() { - DividerItemDecoration divider = new DividerItemDecoration(getContext(), - DividerItemDecoration.VERTICAL); - addItemDecoration(divider); - return this; - } - - public RecyclerList withItemClickListener(RecyclerClickListener listener) { - if (adapter != null) { - adapter.setOnItemClickListener(listener); - } - return this; - } - - // Data management methods - public void setItems(List items) { - if (adapter != null) { - adapter.setItems(items); - } - } - - public void addItem(T item) { - if (adapter != null) { - adapter.addItem(item); - } - } - - public void addItem(int position, T item) { - if (adapter != null) { - adapter.addItem(position, item); - } - } - - public void removeItem(int position) { - if (adapter != null) { - adapter.removeItem(position); - } - } - - public void removeItem(T item) { - if (adapter != null) { - adapter.removeItem(item); - } - } - - public void updateItem(int position, T item) { - if (adapter != null) { - adapter.updateItem(position, item); - } - } - - public void clear() { - if (adapter != null) { - adapter.clear(); - } - } - - public T getItem(int position) { - return adapter != null ? adapter.getItem(position) : null; - } - - public List getItems() { - return adapter != null ? adapter.getItems() : null; - } - - public RecyclerAdapter getGenericAdapter() { - return adapter; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/FileEditor.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/FileEditor.java index b590ec1..429b2b9 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/FileEditor.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/FileEditor.java @@ -1,7 +1,13 @@ package com.ridgebotics.ridgescout.utility; +import static com.ridgebotics.ridgescout.utility.DataManager.match_transferValues; +import static com.ridgebotics.ridgescout.utility.DataManager.match_values; +import static com.ridgebotics.ridgescout.utility.DataManager.pit_transferValues; +import static com.ridgebotics.ridgescout.utility.DataManager.pit_values; + import android.content.Context; +import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter; import com.ridgebotics.ridgescout.types.frcEvent; import com.ridgebotics.ridgescout.types.frcTeam; @@ -373,25 +379,21 @@ public final class FileEditor { - - public static String[] getEventFiles(String evcode){ + public static String[] getFiles(){ File f = new File(baseDir); File[] files = f.listFiles(); if(files == null){return new String[0];} - ArrayList outFiles = new ArrayList<>(); - outFiles.add("matches.fields"); - outFiles.add("pits.fields"); -// outFiles.add(evcode + ".eventdata"); + List outFiles = new ArrayList<>(); for (File file : files) { - String name = file.getName(); - if(!file.isDirectory() && name.startsWith(evcode)) { + if (!file.isDirectory()) { outFiles.add(file.getName()); } } + String[] filenames = outFiles.toArray(new String[0]); try { @@ -413,6 +415,24 @@ public final class FileEditor { return filenames; } + + + public static String[] getEventFiles(String evcode){ + String[] files = getFiles(); + + List outFiles = new ArrayList<>(); + outFiles.add("matches.fields"); + outFiles.add("pits.fields"); + + for (String file : files) { + if(file.startsWith(evcode)) { + outFiles.add(file); + } + } + + return outFiles.toArray(new String[0]); + } + // https://stackoverflow.com/questions/7620401/how-to-convert-image-file-data-in-a-byte-array-to-a-bitmap // public static String imageToBitMap(byte[] data) throws IOException { // Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); @@ -425,5 +445,40 @@ public final class FileEditor { public static boolean setTeams(Context context, String key, ArrayList teams){ return true; } + + public static List findCorruptedFiles() { + List removeFiles = new ArrayList<>(); + String[] localFiles = FileEditor.getFiles(); + + DataManager.reload_match_fields(); + DataManager.reload_pit_fields(); + + for(int i = 0; i < localFiles.length; i++){ + String filename = localFiles[i]; + + String[] split = filename.split("\\."); + + String extention =split[split.length-1]; + + + try { + switch (extention) { + case "matchscoutdata": + ScoutingDataWriter.load(filename, match_values, match_transferValues); + break; + case "pitscoutdata": + ScoutingDataWriter.load(filename, pit_values, pit_transferValues); + break; + default: + continue; + } + } catch (Exception e) { + removeFiles.add(filename); + } + + + } + return removeFiles; + } }