Cambios flag por ventana

Problemas sincro al importar
Elena/develop
Gerardo 2022-06-09 00:35:13 +02:00
parent 7fd093c49e
commit b4bdeed856
9 changed files with 225 additions and 28 deletions

View File

@ -25,9 +25,11 @@ namespace OliviaAddInPro
{ {
protected override void OnClick() protected override void OnClick()
{ {
if (OliviaGlob.TipoEjec == TiposEjecucion.Ninguno) if (OliviaGlob.TipoView == TiposEjecucion.Ninguno)
{ {
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Props); OliviaGlob.SetFlagTipEjec(TiposEjecucion.Props);
OliviaGlob.ViewSetFlagTipEjec(TiposEjecucion.Props);
DockpaneConfigViewModel.Reset(); DockpaneConfigViewModel.Reset();
DockpaneConfigViewModel.Show(); DockpaneConfigViewModel.Show();
} }

View File

@ -27,7 +27,7 @@ namespace OliviaAddInPro
{ {
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
if (OliviaGlob.TipoEjec == TiposEjecucion.Ninguno) if (OliviaGlob.TipoView == TiposEjecucion.Ninguno)
{ {
///Comprueba que existe la red navegable configurada ///Comprueba que existe la red navegable configurada
@ -39,13 +39,15 @@ namespace OliviaAddInPro
else else
{ {
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Limp); OliviaGlob.SetFlagTipEjec(TiposEjecucion.Limp);
if(OliviaGlob.Limp==null) OliviaGlob.ViewSetFlagTipEjec(TiposEjecucion.Limp);
if (OliviaGlob.Limp==null)
OliviaGlob.Limp = new Limpieza(); OliviaGlob.Limp = new Limpieza();
DockpaneLimpiezaViewModel.Reset(); DockpaneLimpiezaViewModel.Reset();
DockpaneLimpiezaViewModel.Show(); DockpaneLimpiezaViewModel.Show();
} }
} }
else if(OliviaGlob.IsProps()) else if(OliviaGlob.ViewIsProps())
{ {
HelperGlobal.ponMsg(Resource1.String_estaenprops, System.Windows.MessageBoxImage.Warning); HelperGlobal.ponMsg(Resource1.String_estaenprops, System.Windows.MessageBoxImage.Warning);
} }

View File

@ -25,7 +25,7 @@ namespace OliviaAddInPro
{ {
protected override void OnClick() protected override void OnClick()
{ {
if (OliviaGlob.TipoEjec==TiposEjecucion.Ninguno) if (OliviaGlob.TipoView == TiposEjecucion.Ninguno)
{ {
///Comprueba que existe la red navegable configurada ///Comprueba que existe la red navegable configurada
if (!OliviaGlob.CompruebaNwYCampos()) if (!OliviaGlob.CompruebaNwYCampos())
@ -36,13 +36,15 @@ namespace OliviaAddInPro
else else
{ {
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Reco); OliviaGlob.SetFlagTipEjec(TiposEjecucion.Reco);
if(OliviaGlob.Reco==null) OliviaGlob.ViewSetFlagTipEjec(TiposEjecucion.Reco);
if (OliviaGlob.Reco==null)
OliviaGlob.Reco = new Recogida(); OliviaGlob.Reco = new Recogida();
DockpaneRecogidaViewModel.Reset(); DockpaneRecogidaViewModel.Reset();
DockpaneRecogidaViewModel.Show(); DockpaneRecogidaViewModel.Show();
} }
} }
else if (OliviaGlob.IsProps()) else if (OliviaGlob.ViewIsProps())
{ {
HelperGlobal.ponMsg(Resource1.String_estaenprops, System.Windows.MessageBoxImage.Warning); HelperGlobal.ponMsg(Resource1.String_estaenprops, System.Windows.MessageBoxImage.Warning);
} }

View File

@ -2108,9 +2108,10 @@ namespace OliviaAddInPro.Helper
{ {
ArcGIS.Core.Geometry.SpatialReference spatref = GetSpatRef(nom_shp); ArcGIS.Core.Geometry.SpatialReference spatref = GetSpatRef(nom_shp);
var environments = Geoprocessing.MakeEnvironmentArray(outputCoordinateSystem: spatref); var environments = Geoprocessing.MakeEnvironmentArray(outputCoordinateSystem: spatref);
CancelableProgressorSource cps = new CancelableProgressorSource(); //CancelableProgressorSource cps = new CancelableProgressorSource();
var _cts = new System.Threading.CancellationTokenSource();
var completa = false; var completa = false;
var gpres = Geoprocessing.ExecuteToolAsync("FeatureClassToFeatureClass_conversion", args, environments,cps.CancellationTokenSource.Token, var gpres = Geoprocessing.ExecuteToolAsync("FeatureClassToFeatureClass_conversion", args, environments, _cts.Token,
(event_name, o) => // implement delegate and handle events (event_name, o) => // implement delegate and handle events
{ {
switch (event_name) switch (event_name)
@ -2134,9 +2135,9 @@ namespace OliviaAddInPro.Helper
var av = (int)o; var av = (int)o;
if ((int)o < 0) if ((int)o < 0)
{ {
completa = true; //completa = true;
//System.Windows.MessageBox.Show(msg2); //System.Windows.MessageBox.Show(msg2);
//cps.CancellationTokenSource.Cancel(); // _cts.Cancel();
} }
break; break;
@ -2144,7 +2145,7 @@ namespace OliviaAddInPro.Helper
} }
}); });
while (!gpres.IsCompleted && gpres.IsCanceled && gpres.IsFaulted && !completa) while (!gpres.IsCompleted && !gpres.IsCanceled && !gpres.IsFaulted)
Thread.Sleep(10); Thread.Sleep(10);
if (gpres.IsCanceled) if (gpres.IsCanceled)
@ -2162,15 +2163,24 @@ namespace OliviaAddInPro.Helper
res.Error.Add("Error: " + msg); res.Error.Add("Error: " + msg);
return res; return res;
} }
/*
_cts.Cancel();
for (int ii = 0; ii < 1000; ii++)
{
if (gpres.IsCompleted && gpres.IsCanceled && gpres.IsFaulted)
break;
Thread.Sleep(10);
}
try try
{ {
gpres.Dispose(); if (!gpres.IsCompleted && !gpres.IsCanceled && !gpres.IsFaulted)
gpres.Dispose();
} }
catch (Exception e) catch (Exception e)
{ {
string msg = ""; string msg = "";
msg = e.Message; msg = e.Message;
} }*/
res.Value = true; res.Value = true;
//actualiza la gdb //actualiza la gdb
Refresh(System.IO.Path.GetDirectoryName(Gdb_dataset)); Refresh(System.IO.Path.GetDirectoryName(Gdb_dataset));

View File

@ -90,6 +90,10 @@ namespace OliviaAddInPro.Model
get { return tipoEjec; } get { return tipoEjec; }
set { tipoEjec = value; } set { tipoEjec = value; }
} }
public static TiposEjecucion TipoView
{ get; set; }
public static Limpieza Limp public static Limpieza Limp
{ {
get { return limp; } get { return limp; }
@ -107,6 +111,7 @@ namespace OliviaAddInPro.Model
public static void Inicia() public static void Inicia()
{ {
tipoEjec = TiposEjecucion.Ninguno; tipoEjec = TiposEjecucion.Ninguno;
TipoView= TiposEjecucion.Ninguno;
IniDefault(); IniDefault();
LimpiezaDef.iniciaLimpDef(); LimpiezaDef.iniciaLimpDef();
RecogidaDef.iniciaRecoDef(); RecogidaDef.iniciaRecoDef();
@ -162,6 +167,39 @@ namespace OliviaAddInPro.Model
//quita el flag al tipo de ejecución //quita el flag al tipo de ejecución
OliviaGlob.TipoEjec = OliviaGlob.TipoEjec & ~flag; OliviaGlob.TipoEjec = OliviaGlob.TipoEjec & ~flag;
} }
public static bool ViewIsLimp()
{
return ViewIsHasFlagTipEjec(TiposEjecucion.Limp);
}
public static bool ViewIsReco()
{
return ViewIsHasFlagTipEjec(TiposEjecucion.Reco);
}
public static bool ViewIsProps()
{
return ViewIsHasFlagTipEjec(TiposEjecucion.Props);
}
public static bool ViewIsHasFlagTipEjec(TiposEjecucion flag)
{
return (OliviaGlob.TipoView & flag) == flag;
}
public static void ViewSetFlagTipEjec(TiposEjecucion flag)
{
//pone el tipo de ejecución igual al flag
OliviaGlob.TipoView = flag;
}
public static void ViewAddFlagTipEjec(TiposEjecucion flag)
{
//añade el flag al tipo de ejecución
OliviaGlob.TipoView = OliviaGlob.TipoEjec | flag;
}
public static void ViewRemoveFlagTipEjec(TiposEjecucion flag)
{
//quita el flag al tipo de ejecución
OliviaGlob.TipoView = OliviaGlob.TipoEjec & ~flag;
}
/** /**
* Habilita Sh=true * Habilita Sh=true
* o Deshabilita sh=false * o Deshabilita sh=false
@ -175,6 +213,7 @@ namespace OliviaAddInPro.Model
{ {
DockpaneLimpiezaViewModel.Show(); DockpaneLimpiezaViewModel.Show();
SetFlagTipEjec(TiposEjecucion.Limp); SetFlagTipEjec(TiposEjecucion.Limp);
ViewSetFlagTipEjec(TiposEjecucion.Limp);
} }
else else
{ {
@ -188,6 +227,8 @@ namespace OliviaAddInPro.Model
{ {
DockpaneRecogidaViewModel.Show(); DockpaneRecogidaViewModel.Show();
SetFlagTipEjec(TiposEjecucion.Reco); SetFlagTipEjec(TiposEjecucion.Reco);
ViewSetFlagTipEjec(TiposEjecucion.Reco);
} }
else else
@ -201,6 +242,8 @@ namespace OliviaAddInPro.Model
{ {
DockpaneConfigViewModel.Show(); DockpaneConfigViewModel.Show();
SetFlagTipEjec(TiposEjecucion.Props); SetFlagTipEjec(TiposEjecucion.Props);
ViewSetFlagTipEjec(TiposEjecucion.Props);
} }
else else
@ -210,10 +253,11 @@ namespace OliviaAddInPro.Model
} }
else else
{ {
SetFlagTipEjec(TiposEjecucion.Ninguno); //SetFlagTipEjec(TiposEjecucion.Ninguno);
ViewSetFlagTipEjec(TiposEjecucion.Ninguno);
} }
if (!sh) if (!sh)
SetFlagTipEjec(TiposEjecucion.Ninguno); ViewSetFlagTipEjec(TiposEjecucion.Ninguno);
} }
/** /**

View File

@ -66,8 +66,7 @@ namespace OliviaAddInPro.Services
//borra los archivos que le toca borrar //borra los archivos que le toca borrar
//BorraFiles(); //BorraFiles();
} }
public void finEjecuta2_old(Respuesta<TiposEjecucion> res, TratamientoComun inst)
public void finEjecuta2(Respuesta<TiposEjecucion> res, TratamientoComun inst)
{ {
String msg = string.Empty; String msg = string.Empty;
String msg_err = "Errores en el proceso de importación de resultados"; String msg_err = "Errores en el proceso de importación de resultados";
@ -136,17 +135,17 @@ namespace OliviaAddInPro.Services
} }
} }
} }
catch(Exception ex) catch (Exception ex)
{ {
msg = msg_err + ": "+msg+": "+ex.Message; msg = msg_err + ": " + msg + ": " + ex.Message;
mal = true; mal = true;
} }
if (mal) if (mal)
{ {
//reinicia flags //reinicia flags
if(OliviaGlob.IsLimp()) if (OliviaGlob.IsLimp())
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Limp); OliviaGlob.SetFlagTipEjec(TiposEjecucion.Limp);
else if(OliviaGlob.IsReco()) else if (OliviaGlob.IsReco())
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Reco); OliviaGlob.SetFlagTipEjec(TiposEjecucion.Reco);
} }
@ -163,7 +162,145 @@ namespace OliviaAddInPro.Services
//borra los archivos que le toca borrar //borra los archivos que le toca borrar
//BorraFiles(); //BorraFiles();
} }
public void finEjecuta2(Respuesta<TiposEjecucion> res, TratamientoComun inst)
{
String msg = string.Empty;
String msg_err = "Errores en el proceso de importación de resultados";
var resp2 = new Respuesta<string> { Value = string.Empty };
var resp = new Respuesta<string> { Value = string.Empty };
bool mal = false;
try
{
//gestiona los flags, el estado de finok o finnok va en res.Vale
if (res.HasError)
{
msg = res.Error.First();
//actualiza los flags
OliviaGlob.RemoveFlagTipEjec(TiposEjecucion.FinEjecNOk);
}
else
{
//actualiza los flags
OliviaGlob.RemoveFlagTipEjec(TiposEjecucion.FinEjecOk);
//importa resultados
resp = IniImport();
if (resp.HasError)
{
msg = resp.Error.First();
mal = true;
}
else
{
ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run((Func<bool>)(() =>
{
string GdbFileName = resp.Value;
if (OliviaGlob.HasFlagTipEjec(TiposEjecucion.EjecSecto)) //Ha terminado bien la sectorización
{
//actualiza los flags
OliviaGlob.RemoveFlagTipEjec(TiposEjecucion.EjecSecto);
//acciones de importación
resp2 = inst.ServCom.ImportSecto(GdbFileName);
}
else if (OliviaGlob.HasFlagTipEjec(TiposEjecucion.EjecPlanif)) //Ha terminado bien la planificación
{
//actualiza los flags
OliviaGlob.RemoveFlagTipEjec(TiposEjecucion.EjecPlanif);
//guarda csv
GuardaCsv(inst);
//acciones de importación
resp2 = inst.ServCom.ImportPlanif(GdbFileName);
}
Application.Current.Dispatcher.BeginInvoke(new Action<Respuesta<string>, Respuesta<string>, bool, string, TratamientoComun>((p, v, x, u, w) => finEjecuta3(p, v, x, u, w)), resp, resp2, mal, msg, inst);
return true;
}));
}
}
}
catch(Exception ex)
{
msg = msg_err + ": "+msg+": "+ex.Message;
mal = true;
}
if (mal)
{
//reinicia flags
if (OliviaGlob.IsLimp())
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Limp);
else if (OliviaGlob.IsReco())
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Reco);
HelperGlobal.ponMsg(msg);
OliviaGlob.progrDialog.Hide();
//muestra la ventana
OliviaGlob.ShowHidePane(true);
var task = ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
{
//borra los archivos que le toca borrar
BorraFiles();
});
}
}
public void finEjecuta3(Respuesta<string> resp, Respuesta<string> resp2,bool mal, string msg, TratamientoComun inst)
{
String msg_err = "Errores en el proceso de importación de resultados";
if (!mal)
{
try
{
if (string.IsNullOrEmpty(resp2.Value))
{
if (resp2.HasError)
{
msg = resp2.Error.First();
}
else
msg = msg_err;
mal = true;
}
else
{
msg = Resource1.String_exito;
//pone modo config2
OliviaGlob.AddFlagTipEjec(TiposEjecucion.Config2);
//actualiza la capa de la que tiene que leer ahora para planificar
inst.CapaElems = resp.Value;
}
}
catch (Exception ex)
{
msg = msg_err + ": " + msg + ": " + ex.Message;
mal = true;
}
}
if (mal)
{
//reinicia flags
if (OliviaGlob.IsLimp())
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Limp);
else if (OliviaGlob.IsReco())
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Reco);
}
HelperGlobal.ponMsg(msg);
OliviaGlob.progrDialog.Hide();
//muestra la ventana
OliviaGlob.ShowHidePane(true);
var task = ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
{
//borra los archivos que le toca borrar
BorraFiles();
});
//task.Wait();
//borra los archivos que le toca borrar
//BorraFiles();
}
/** /**
* Borra los archivos exportados para el proceso * Borra los archivos exportados para el proceso
*/ */

View File

@ -45,7 +45,7 @@ namespace OliviaAddInPro
} }
protected override void OnHidden() protected override void OnHidden()
{ {
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Ninguno); OliviaGlob.ViewSetFlagTipEjec(TiposEjecucion.Ninguno);
} }
internal static void Hide_() internal static void Hide_()
{ {

View File

@ -68,7 +68,7 @@ namespace OliviaAddInPro
} }
protected override void OnHidden() protected override void OnHidden()
{ {
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Ninguno); OliviaGlob.ViewSetFlagTipEjec(TiposEjecucion.Ninguno);
} }
/// <summary> /// <summary>
/// Text shown near the top of the DockPane. /// Text shown near the top of the DockPane.

View File

@ -45,7 +45,7 @@ namespace OliviaAddInPro
} }
protected override void OnHidden() protected override void OnHidden()
{ {
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Ninguno); OliviaGlob.ViewSetFlagTipEjec(TiposEjecucion.Ninguno);
} }
internal static void Hide_() internal static void Hide_()
{ {
@ -67,7 +67,7 @@ namespace OliviaAddInPro
if (isVisible == false && !firstTimeShow && !hideTemp) if (isVisible == false && !firstTimeShow && !hideTemp)
{ {
//avisa de cerrar la ventana //avisa de cerrar la ventana
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Ninguno); OliviaGlob.ViewSetFlagTipEjec(TiposEjecucion.Ninguno);
} }
if (firstTimeShow) if (firstTimeShow)
firstTimeShow = false; firstTimeShow = false;