Skip to content

Commit fa4797b

Browse files
committed
JUnit Tests + Set Bearing Logic
- Procedure calculate bearing via selected folders - JUnit Tests for Helper class
1 parent d3a8a7b commit fa4797b

6 files changed

Lines changed: 352 additions & 4 deletions

File tree

OSVUploadr/src/main/java/ca/osmcanada/osvuploadr/JFMain.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
*/
2424
public class JFMain extends javax.swing.JFrame implements ActionListener {
2525
private JPInfoBox jib;
26+
private JPMain jp;
2627
private JMenuBar menuBar;
2728
private JMenu mFile, mActions,mGeo;
2829
private JMenuItem mExit,mSetBearing;
@@ -88,7 +89,7 @@ public void run() {
8889
}
8990
System.out.println("Language:" + l.getLanguage() + " Country:" + l.getCountry());
9091

91-
JPMain jp = new JPMain(l);
92+
jp = new JPMain(l);
9293
jib=new JPInfoBox(l);
9394
jp.setVisible(true);
9495
jib.setVisible(false);
@@ -159,6 +160,9 @@ public void actionPerformed(ActionEvent e){
159160
{
160161
System.exit(0);
161162
}
163+
else if(e.getSource().equals(mSetBearing)){
164+
jp.setBearing();
165+
}
162166
}
163167

164168
// Variables declaration - do not modify//GEN-BEGIN:variables

OSVUploadr/src/main/java/ca/osmcanada/osvuploadr/JPMain.java

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,81 @@ public JPMain(Locale locale) {
105105

106106
}
107107

108+
public void setBearing(){
109+
if(listDir.getSelectedObjects().length==0){
110+
JOptionPane.showMessageDialog(null, new String(r.getString("select_item").getBytes(),StandardCharsets.UTF_8), new String(r.getString("attention").getBytes(),StandardCharsets.UTF_8), JOptionPane.INFORMATION_MESSAGE);
111+
return; //Need selected elements to work
112+
}
113+
Object[] bearings = new Object[361];
114+
for(int i=0;i<=360;i++){
115+
bearings[i]=i;
116+
}
117+
String[] dirs = listDir.getSelectedItems();
118+
for(String dir:dirs){
119+
Object bearing_offset = JOptionPane.showInputDialog(jbRemove, new String(r.getString("set_offset").getBytes(),StandardCharsets.UTF_8), new String(r.getString("attention").getBytes(),StandardCharsets.UTF_8), JOptionPane.QUESTION_MESSAGE, null, bearings, 0);
120+
if(bearing_offset==null){
121+
return;
122+
}
123+
Thread t = new Thread(){
124+
public void run(){
125+
processBearing(dir,(int)bearing_offset);
126+
}
127+
};
128+
t.start();
129+
130+
}
131+
}
132+
133+
public void processBearing(String directory, int Offset){
134+
File dir_photos = new File(directory);
135+
//filter only .jpgs
136+
FilenameFilter fileNameFilter = new FilenameFilter() {
137+
public boolean accept(File dir, String name) {
138+
if (name.lastIndexOf('.') > 0) {
139+
int lastIndex = name.lastIndexOf('.');
140+
String str = name.substring(lastIndex);
141+
if (str.toLowerCase(Locale.ENGLISH).equals(".jpg")) {
142+
return true;
143+
}
144+
}
145+
return false;
146+
}
147+
};
148+
File[] file_list = dir_photos.listFiles(fileNameFilter);
149+
System.out.println("Pictures found:"+ String.valueOf(file_list.length));
150+
151+
System.out.println("Sorting files");
152+
//sort by modified time
153+
Arrays.sort(file_list, new Comparator<File>(){
154+
public int compare(File f1, File f2)
155+
{
156+
return Long.valueOf(Helper.getFileTime(f1)).compareTo(Helper.getFileTime(f2));
157+
}});
158+
System.out.println("End sorting");
159+
160+
Double last_bearing;
161+
ImageProperties imTO = null;
162+
ImageProperties imFROM = null;
163+
for(int i=file_list.length-1;i>=0;i--){
164+
if(i==0){
165+
//TODO: set last bearing
166+
continue;
167+
}
168+
if(imTO==null){
169+
imTO = Helper.getImageProperties(file_list[i]);
170+
imFROM = Helper.getImageProperties(file_list[i-1]);
171+
}
172+
else
173+
{
174+
imTO=imFROM;
175+
imFROM = Helper.getImageProperties(file_list[i-1]);
176+
}
177+
last_bearing = (Helper.calc_bearing(imFROM.getLatitude(), imFROM.getLongitude(), imTO.getLatitude(), imTO.getLongitude())+ Offset) % 360.00;
178+
System.out.println("Calculated bearing (with offset) at: " + last_bearing);
179+
180+
}
181+
}
182+
108183
private void setUILang(){
109184
jlDirectories.setText(new String(r.getString("Directories").getBytes(), StandardCharsets.UTF_8));
110185
jbAdd.setText(new String(r.getString("Add_Folder").getBytes(), StandardCharsets.UTF_8));

OSVUploadr/src/main/resources/Bundle.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,7 @@ done=Done
2020
Menu_File=File
2121
Menu_Actions=Actions
2222
Menu_Geo=Geo
23-
Menu_SetBearing=Set bearing
23+
Menu_SetBearing=Set bearing
24+
select_item=Please select item(s) from directory list that you wish to set the bearing for.
25+
attention=Attention
26+
set_offset=Select bearing offset that will be applied to\n

OSVUploadr/src/main/resources/Bundle_es.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,7 @@ done=Acabado
2020
Menu_File=Archivo
2121
Menu_Actions=Acciones
2222
Menu_Geo=Geo
23-
Menu_SetBearing=Definir marcación
23+
Menu_SetBearing=Definir marcación
24+
select_item=Por favor, seleccione los elementos de la lista de carpetas que desea cambiar la marcación.
25+
attention=Atención
26+
set_offset=Seleccione el offset de marcación du relèvement que se aplicarán a\n

OSVUploadr/src/main/resources/Bundle_fr.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,7 @@ done=Terminé
2020
Menu_File=Ficher
2121
Menu_Actions=Actions
2222
Menu_Geo=Géo
23-
Menu_SetBearing=Définir relèvement
23+
Menu_SetBearing=Définir relèvement
24+
select_item=Veuillez sélectionner des items de la liste de répertoires que vous désirez changer le relèvement.
25+
attention=Attention
26+
set_offset=Sélectionnez le décalage du relèvement qui sera appliqué à\n

0 commit comments

Comments
 (0)