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()
{
if (OliviaGlob.TipoEjec == TiposEjecucion.Ninguno)
if (OliviaGlob.TipoView == TiposEjecucion.Ninguno)
{
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Props);
OliviaGlob.ViewSetFlagTipEjec(TiposEjecucion.Props);
DockpaneConfigViewModel.Reset();
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
@ -39,13 +39,15 @@ namespace OliviaAddInPro
else
{
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Limp);
if(OliviaGlob.Limp==null)
OliviaGlob.ViewSetFlagTipEjec(TiposEjecucion.Limp);
if (OliviaGlob.Limp==null)
OliviaGlob.Limp = new Limpieza();
DockpaneLimpiezaViewModel.Reset();
DockpaneLimpiezaViewModel.Show();
}
}
else if(OliviaGlob.IsProps())
else if(OliviaGlob.ViewIsProps())
{
HelperGlobal.ponMsg(Resource1.String_estaenprops, System.Windows.MessageBoxImage.Warning);
}

View File

@ -25,7 +25,7 @@ namespace OliviaAddInPro
{
protected override void OnClick()
{
if (OliviaGlob.TipoEjec==TiposEjecucion.Ninguno)
if (OliviaGlob.TipoView == TiposEjecucion.Ninguno)
{
///Comprueba que existe la red navegable configurada
if (!OliviaGlob.CompruebaNwYCampos())
@ -36,13 +36,15 @@ namespace OliviaAddInPro
else
{
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Reco);
if(OliviaGlob.Reco==null)
OliviaGlob.ViewSetFlagTipEjec(TiposEjecucion.Reco);
if (OliviaGlob.Reco==null)
OliviaGlob.Reco = new Recogida();
DockpaneRecogidaViewModel.Reset();
DockpaneRecogidaViewModel.Show();
}
}
else if (OliviaGlob.IsProps())
else if (OliviaGlob.ViewIsProps())
{
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);
var environments = Geoprocessing.MakeEnvironmentArray(outputCoordinateSystem: spatref);
CancelableProgressorSource cps = new CancelableProgressorSource();
//CancelableProgressorSource cps = new CancelableProgressorSource();
var _cts = new System.Threading.CancellationTokenSource();
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
{
switch (event_name)
@ -2134,9 +2135,9 @@ namespace OliviaAddInPro.Helper
var av = (int)o;
if ((int)o < 0)
{
completa = true;
//completa = true;
//System.Windows.MessageBox.Show(msg2);
//cps.CancellationTokenSource.Cancel();
// _cts.Cancel();
}
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);
if (gpres.IsCanceled)
@ -2162,15 +2163,24 @@ namespace OliviaAddInPro.Helper
res.Error.Add("Error: " + msg);
return res;
}
/*
_cts.Cancel();
for (int ii = 0; ii < 1000; ii++)
{
if (gpres.IsCompleted && gpres.IsCanceled && gpres.IsFaulted)
break;
Thread.Sleep(10);
}
try
{
gpres.Dispose();
if (!gpres.IsCompleted && !gpres.IsCanceled && !gpres.IsFaulted)
gpres.Dispose();
}
catch (Exception e)
{
string msg = "";
msg = e.Message;
}
}*/
res.Value = true;
//actualiza la gdb
Refresh(System.IO.Path.GetDirectoryName(Gdb_dataset));

View File

@ -90,6 +90,10 @@ namespace OliviaAddInPro.Model
get { return tipoEjec; }
set { tipoEjec = value; }
}
public static TiposEjecucion TipoView
{ get; set; }
public static Limpieza Limp
{
get { return limp; }
@ -107,6 +111,7 @@ namespace OliviaAddInPro.Model
public static void Inicia()
{
tipoEjec = TiposEjecucion.Ninguno;
TipoView= TiposEjecucion.Ninguno;
IniDefault();
LimpiezaDef.iniciaLimpDef();
RecogidaDef.iniciaRecoDef();
@ -162,6 +167,39 @@ namespace OliviaAddInPro.Model
//quita el flag al tipo de ejecución
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
* o Deshabilita sh=false
@ -175,6 +213,7 @@ namespace OliviaAddInPro.Model
{
DockpaneLimpiezaViewModel.Show();
SetFlagTipEjec(TiposEjecucion.Limp);
ViewSetFlagTipEjec(TiposEjecucion.Limp);
}
else
{
@ -188,6 +227,8 @@ namespace OliviaAddInPro.Model
{
DockpaneRecogidaViewModel.Show();
SetFlagTipEjec(TiposEjecucion.Reco);
ViewSetFlagTipEjec(TiposEjecucion.Reco);
}
else
@ -201,6 +242,8 @@ namespace OliviaAddInPro.Model
{
DockpaneConfigViewModel.Show();
SetFlagTipEjec(TiposEjecucion.Props);
ViewSetFlagTipEjec(TiposEjecucion.Props);
}
else
@ -210,10 +253,11 @@ namespace OliviaAddInPro.Model
}
else
{
SetFlagTipEjec(TiposEjecucion.Ninguno);
//SetFlagTipEjec(TiposEjecucion.Ninguno);
ViewSetFlagTipEjec(TiposEjecucion.Ninguno);
}
if (!sh)
SetFlagTipEjec(TiposEjecucion.Ninguno);
ViewSetFlagTipEjec(TiposEjecucion.Ninguno);
}
/**

View File

@ -66,8 +66,7 @@ namespace OliviaAddInPro.Services
//borra los archivos que le toca borrar
//BorraFiles();
}
public void finEjecuta2(Respuesta<TiposEjecucion> res, TratamientoComun inst)
public void finEjecuta2_old(Respuesta<TiposEjecucion> res, TratamientoComun inst)
{
String msg = string.Empty;
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;
}
if (mal)
{
//reinicia flags
if(OliviaGlob.IsLimp())
if (OliviaGlob.IsLimp())
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Limp);
else if(OliviaGlob.IsReco())
else if (OliviaGlob.IsReco())
OliviaGlob.SetFlagTipEjec(TiposEjecucion.Reco);
}
@ -163,7 +162,145 @@ namespace OliviaAddInPro.Services
//borra los archivos que le toca borrar
//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
*/

View File

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

View File

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

View File

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